Class: S7n::Entry
Overview
機密情報を表現する。
Instance Attribute Summary collapse
-
#attributes ⇒ Object
readonly
属性の配列。.
-
#tags ⇒ Object
readonly
タグ名の配列。.
Instance Method Summary collapse
-
#add_attributes(*attributes) ⇒ Object
attributes で指定した属性を追加する。 名前が同じ属性が存在する場合、値を書き換える。 名前が同じ属性が存在し、なおかつ型が異なる場合、ApplicationError 例外を発生させる。.
-
#duplicate_attributes(exclude_uneditable = true) ⇒ Object
全ての属性の複製を取得する。.
-
#get_attribute(name) ⇒ Object
name で指定した名前の属性を取得する。 存在しない場合、nil を返す。.
-
#id ⇒ Object
ID を取得する。.
-
#id=(val) ⇒ Object
ID を設定する。.
-
#initialize ⇒ Entry
constructor
A new instance of Entry.
- #method_missing(symbol, *args) ⇒ Object
Constructor Details
#initialize ⇒ Entry
Returns a new instance of Entry.
16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/s7n/entry.rb', line 16 def initialize @attributes = [] attr = NumericAttribute.new("name" => "id", "editabled" => false, "protected" => true) @attributes.push(attr) attr = TextAttribute.new("name" => "name", "protected" => true) @attributes.push(attr) attr = NumericAttribute.new("name" => "rate", "protected" => true, "value" => 1) @attributes.push(attr) @tags = [] end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(symbol, *args) ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/s7n/entry.rb', line 86 def method_missing(symbol, *args) attr_name = symbol.to_s if attr_name[-1] == "=" attr_name = attr_name[0..-2] setter = true end attr = @attributes.find { |a| a.name == attr_name } if attr if setter attr.value = args.first else return attr.value end else super end end |
Instance Attribute Details
#attributes ⇒ Object (readonly)
属性の配列。
14 15 16 |
# File 'lib/s7n/entry.rb', line 14 def attributes @attributes end |
#tags ⇒ Object (readonly)
タグ名の配列。
11 12 13 |
# File 'lib/s7n/entry.rb', line 11 def @tags end |
Instance Method Details
#add_attributes(*attributes) ⇒ Object
attributes で指定した属性を追加する。 名前が同じ属性が存在する場合、値を書き換える。 名前が同じ属性が存在し、なおかつ型が異なる場合、ApplicationError 例外を発生させる。
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/s7n/entry.rb', line 50 def add_attributes(*attributes) [attributes].flatten.each do |attribute| attr = @attributes.find { |a| a.name == attribute.name } if attr if attr.class == attribute.class attr.value = attribute.value else raise ApplicationError, _("not same attribute type: name=<%s> expected=<%s> actual=<%s>") % [attr.name, attr.class, attribute.class] end else @attributes.push(attribute) end end end |
#duplicate_attributes(exclude_uneditable = true) ⇒ Object
全ての属性の複製を取得する。
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/s7n/entry.rb', line 68 def duplicate_attributes(exclude_uneditable = true) if exclude_uneditable attrs = @attributes else attrs = @attributes.select { |attr| attr.editable? } end return attrs.collect { |attr| a = attr.dup begin a.value = attr.value.dup rescue TypeError end a } end |
#get_attribute(name) ⇒ Object
name で指定した名前の属性を取得する。 存在しない場合、nil を返す。
42 43 44 |
# File 'lib/s7n/entry.rb', line 42 def get_attribute(name) return @attributes.find { |attr| attr.name == name } end |
#id ⇒ Object
ID を取得する。
31 32 33 |
# File 'lib/s7n/entry.rb', line 31 def id return get_attribute("id").value end |
#id=(val) ⇒ Object
ID を設定する。
36 37 38 |
# File 'lib/s7n/entry.rb', line 36 def id=(val) get_attribute("id").value = val end |