Module: YAMLiner::YAMLinerActions

Defined in:
lib/yamliner.rb

Overview

CRUD operation functions and some tools

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#yamline_settingsObject (readonly)

Returns the value of attribute yamline_settings.



38
39
40
# File 'lib/yamliner.rb', line 38

def yamline_settings
  @yamline_settings
end

Instance Method Details

#to_yaml_propertiesObject

removing our yamline_settings instance variable



49
50
51
# File 'lib/yamliner.rb', line 49

def to_yaml_properties
  to_yaml_properties_orginal - [:@yamline_settings, '@yamline_settings']
end

#to_yaml_properties_orginalObject

aliasing to_yaml_properties to remove our instance variable



46
# File 'lib/yamliner.rb', line 46

alias to_yaml_properties_orginal to_yaml_properties

#to_yaml_styleObject

You can get inline YAML only redefining this method



41
42
43
# File 'lib/yamliner.rb', line 41

def to_yaml_style
  :inline
end

#yamlineObject

Returns generated YAMLiner line

>> a.yamline
=> "#YAMLiner--- {:name: selman, :surname: ulug}\n"


56
57
58
# File 'lib/yamliner.rb', line 56

def yamline
  @yamline_settings[:prefix] + @yamline_settings[:name] + to_yaml.chop + @yamline_settings[:postfix] + "\n"
end

#yamline_delete!(lines = nil) ⇒ Object

Finds and deletes formatted line/lines from supplied file/files. if formetted line is not uniq it deletes all of them.

a.yamline_set(:file => 'test.txt')
a.yamline_delete!


98
99
100
101
102
103
104
# File 'lib/yamliner.rb', line 98

def yamline_delete!(lines = nil)
  lines = file_lines unless lines
  return unless lines
  lines_readed = yamline_read(lines, false)
  lines_readed.each {|lr| lines.delete(lr) } if lines_readed
  save_file(lines)
end

#yamline_read(lines = nil, loaded = true) ⇒ Object

Reads your supplied file/files if successfull returns readed object

Dir['**/*.txt'].each {|f| a.yamline_set(:file => f); a.yamline_read }


73
74
75
76
77
78
79
80
81
# File 'lib/yamliner.rb', line 73

def yamline_read(lines = nil, loaded = true)
  lines = file_lines unless lines
  return unless lines
  matcher = %r{^#{Regexp.escape(@yamline_settings[:prefix] + @yamline_settings[:name])}(.*?)#{Regexp.escape(@yamline_settings[:postfix])}$}
  line_l = []
  line_s = lines.select {|line| line_l << YAML::load($1) if line =~ matcher }
  return if line_s.empty?
  loaded ? line_l : line_s
end

#yamline_set(settings = {}) ⇒ Object

YAMLiner settings default values

:name => 'YAMLiner'
:file => ''
:line => 0
:prefix => '#'
:postfix => ''
:writeto => ''


67
68
69
# File 'lib/yamliner.rb', line 67

def yamline_set(settings = {})
  @yamline_settings.merge!(settings) unless settings.empty?
end

#yamline_write!Object

Writes the generated YAMLiner line to supplied file/files if there is a same formated line it deletes and write again.

a.yamline_set(:file => 'test.txt')
a.yamline_write!


87
88
89
90
91
92
# File 'lib/yamliner.rb', line 87

def yamline_write!
  lines = file_lines || []
  yamline_delete!(lines) unless lines.empty?
  lines.insert(@yamline_settings[:line], yamline)
  save_file(lines)
end