Class: Fech::DefaultTranslations
- Inherits:
-
Object
- Object
- Fech::DefaultTranslations
- Defined in:
- lib/fech/default_translations.rb
Overview
Stores sets of build-in translations that can be mixed in to a Fech::Filing. Contains functions that accept a Translator, and add arbitrary translations to it. The public function names should correspond to the key used to mix it in.
filing = Fech::Filing.new(XXXXXX, :translate => [:names, :dates])
Constant Summary collapse
- NAME_BITS =
The five bits that make up a name, and their labels in the People gem
[:prefix, :first_name, :middle_name, :last_name, :suffix]
- PEOPLE_BITS =
[:title, :first, :middle, :last, :suffix]
Instance Attribute Summary collapse
-
#t ⇒ Object
readonly
Returns the value of attribute t.
Instance Method Summary collapse
-
#dates ⇒ Object
Converts everything that looks like an FEC-formatted date to a native Ruby Date object.
-
#initialize(translator) ⇒ DefaultTranslations
constructor
A new instance of DefaultTranslations.
-
#names ⇒ Object
Splits composite names into its component parts, and combines those parts into composites where appropriate.
Constructor Details
#initialize(translator) ⇒ DefaultTranslations
Returns a new instance of DefaultTranslations.
16 17 18 |
# File 'lib/fech/default_translations.rb', line 16 def initialize(translator) @t = translator end |
Instance Attribute Details
#t ⇒ Object (readonly)
Returns the value of attribute t.
14 15 16 |
# File 'lib/fech/default_translations.rb', line 14 def t @t end |
Instance Method Details
#dates ⇒ Object
Converts everything that looks like an FEC-formatted date to a native Ruby Date object.
67 68 69 70 71 72 73 |
# File 'lib/fech/default_translations.rb', line 67 def dates # only convert fields whose name is date* or *_date* # lots of other things might be 8 digits, and we have to exclude eg 'candidate' t.convert :field => /(^|_)date/ do |value| Date.parse(value) rescue value end end |
#names ⇒ Object
Splits composite names into its component parts, and combines those parts into composites where appropriate. Assumes that the canonical names of the fields follow the pattern:
* FIELD_name - "Mr. John Charles Smith Sr."
* FIELD_prefix - "Mr."
* FIELD_first_name - "John"
* FIELD_middle_name - "Charles"
* FIELD_last_name - "Smith"
* FIELD_suffix - "Sr."
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/fech/default_translations.rb', line 29 def names # COMBINE split names into composite names for these rows composites = [ {:row => :sa, :version => /^[6-7]/, :field => [:contributor, :donor_candidate]}, {:row => :sb, :version => /^[6-7]/, :field => [:payee, :beneficiary_candidate]}, {:row => :sc, :version => /^[6-7]/, :field => [:lender, :lender_candidate]}, {:row => :sc1, :version => /^[6-7]/, :field => [:treasurer, :authorized]}, {:row => :sc2, :version => /^[6-7]/, :field => :guarantor}, {:row => :sd, :version => /^[6-7]/, :field => :creditor}, {:row => :se, :version => /^[6-7]/, :field => [:payee, :candidate]}, {:row => :sf, :version => /^[6-7]/, :field => [:payee, :payee_candidate]}, {:row => :f3p, :version => /^[6-7]/, :field => :treasurer}, {:row => :f3p31, :version => /^[6-7]/, :field => :contributor}, ] # SPLIT composite names into component parts for these rows components = [ {:row => :sa, :version => /^3|(5.0)/, :field => :contributor}, {:row => :sa, :version => /^[3-5]/, :field => :donor_candidate}, {:row => :sb, :version => /^3|(5.0)/, :field => :payee}, {:row => :sb, :version => /^[3-5]/, :field => :beneficiary_candidate}, {:row => :sc, :version => /^[3-5]/, :field => [:lender, :lender_candidate]}, {:row => :sc1, :version => /^[3-5]/, :field => [:treasurer, :authorized]}, {:row => :sc2, :version => /^[3-5]/, :field => :guarantor}, {:row => :sd, :version => /^[3-5]/, :field => :creditor}, {:row => :se, :version => /^[3-5]/, :field => [:payee, :cadidate]}, {:row => :sf, :version => /^[3-5]/, :field => [:payee, :payee_candidate]}, {:row => :f3p, :version => /^[3-5]/, :field => :treasurer}, {:row => :f3p31, :version => /^[3-5]/, :field => :contributor}, ] composites.each { |c| combine_components_into_name(c) } components.each { |c| split_name_into_components(c) } end |