Module: Keepassx::Item
Instance Method Summary collapse
- #encode ⇒ Object
- #initialize(_) ⇒ Object
- #inspect ⇒ Object
- #length ⇒ Object
- #terminator=(_) ⇒ Object
- #to_hash ⇒ Object
- #to_xml ⇒ Object
Instance Method Details
#encode ⇒ Object
15 16 17 18 19 20 21 22 |
# File 'lib/keepassx/item.rb', line 15 def encode buffer = '' # FIXME: Check if terminator field not in @fields @fields.each do |field| buffer << field.encode end buffer end |
#initialize(_) ⇒ Object
6 7 8 |
# File 'lib/keepassx/item.rb', line 6 def initialize _ @fields = [] end |
#inspect ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/keepassx/item.rb', line 58 def inspect output = "<#{self.class} " default_fields.each_key do |field_name| if field_name.eql? :password output << ', password=[FILTERED]' else output << ", #{field_name}=#{self.send(field_name)}" unless field_name.eql? :terminator end end output << '>' end |
#length ⇒ Object
10 11 12 |
# File 'lib/keepassx/item.rb', line 10 def length @fields.map(&:length).reduce(&:+) end |
#terminator=(_) ⇒ Object
53 54 55 |
# File 'lib/keepassx/item.rb', line 53 def terminator= _ self.class::FIELD_CLASS.new :name => :terminator end |
#to_hash ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/keepassx/item.rb', line 25 def to_hash result = {} self.class.fields.each do |field| filed = field.to_sym if self.respond_to? field data = self.send field # Skip empty value if data.respond_to? :empty? result[field] = data unless data.empty? else unless data.nil? # FIXME: Implement field export method if data.is_a? Time result[field] = data.to_i else result[field] = data end end end end end # warn "result: #{result}" result end |
#to_xml ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/keepassx/item.rb', line 72 def to_xml section_name = (self.is_a? Keepassx::Group) && 'group' || 'entry' main_section = REXML::Element.new section_name default_fields.each_key do |field_name| unless field_name.eql? :terminator filed_section = main_section.add_element field_name.to_s filed_section.text = self.send field_name end end main_section end |