mods_display 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/mods_display/country_codes.rb +2 -1
- data/lib/mods_display/fields/name.rb +34 -24
- data/lib/mods_display/fields/subject.rb +2 -2
- data/lib/mods_display/fields/title.rb +1 -1
- data/lib/mods_display/version.rb +1 -1
- data/spec/fields/imprint_spec.rb +6 -0
- data/spec/fields/name_spec.rb +56 -33
- data/spec/fields/subject_spec.rb +1 -1
- data/spec/fields/title_spec.rb +10 -0
- data/spec/fixtures/imprint_fixtures.rb +12 -0
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: ab713fa903d406d1b3e5d7b019a33fe02c15f5fd
         | 
| 4 | 
            +
              data.tar.gz: d4ec7939d4d45cbf7ae8162554396b9316641940
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: abb09cdaf3bbe01eab797de7dd20e5467cc66de304d151b11478f5710b55d41b72c3adcbe8e9e07061089ad628aa7435f01309f6c7db6d4468fd3482738dbb8f
         | 
| 7 | 
            +
              data.tar.gz: 2fc0e8df881f28edfba1a85d28f54c3d802b5d1e09b633b48d79a5be58fb6c1d53654693c73b79b530113e3e0a772c86aa0ffe3c8dfb6e100062fc58a562b2c5
         | 
| @@ -371,7 +371,8 @@ module ModsDisplay::CountryCodes | |
| 371 371 | 
             
                "xra" => "South Australia",
         | 
| 372 372 | 
             
                "xs" => "South Georgia and the South Sandwich Islands",
         | 
| 373 373 | 
             
                "xv" => "Slovenia",
         | 
| 374 | 
            -
                 | 
| 374 | 
            +
                # Removing per METADOR-32
         | 
| 375 | 
            +
                #"xx" => "No place, unknown, or undetermined",
         | 
| 375 376 | 
             
                "xxc" => "Canada",
         | 
| 376 377 | 
             
                "xxk" => "United Kingdom",
         | 
| 377 378 | 
             
                "xxr" => "Soviet Union",
         | 
| @@ -2,12 +2,12 @@ class ModsDisplay::Name < ModsDisplay::Field | |
| 2 2 | 
             
              include ModsDisplay::RelatorCodes
         | 
| 3 3 | 
             
              def fields
         | 
| 4 4 | 
             
                return_fields = @values.map do |value|
         | 
| 5 | 
            -
                   | 
| 5 | 
            +
                  roles = process_role(value)
         | 
| 6 6 | 
             
                  person = nil
         | 
| 7 7 | 
             
                  if value.displayForm.length > 0
         | 
| 8 | 
            -
                    person = ModsDisplay::Name::Person.new(:name => value.displayForm.text, : | 
| 8 | 
            +
                    person = ModsDisplay::Name::Person.new(:name => value.displayForm.text, :roles => roles)
         | 
| 9 9 | 
             
                  elsif !name_parts(value).empty?
         | 
| 10 | 
            -
                    person = ModsDisplay::Name::Person.new(:name => name_parts(value), : | 
| 10 | 
            +
                    person = ModsDisplay::Name::Person.new(:name => name_parts(value), :roles => roles)
         | 
| 11 11 | 
             
                  end
         | 
| 12 12 | 
             
                  ModsDisplay::Values.new(:label => displayLabel(value) || name_label(value), :values => [person]) if person
         | 
| 13 13 | 
             
                end.compact
         | 
| @@ -23,7 +23,7 @@ class ModsDisplay::Name < ModsDisplay::Field | |
| 23 23 | 
             
                    output << field.values.map do |val|
         | 
| 24 24 | 
             
                      if @config.link
         | 
| 25 25 | 
             
                        txt = link_to_value(val.name)
         | 
| 26 | 
            -
                        txt << " (#{val. | 
| 26 | 
            +
                        txt << " (#{val.roles.join(', ')})" if val.roles
         | 
| 27 27 | 
             
                        txt
         | 
| 28 28 | 
             
                      else
         | 
| 29 29 | 
             
                        val.to_s
         | 
| @@ -37,17 +37,23 @@ class ModsDisplay::Name < ModsDisplay::Field | |
| 37 37 | 
             
              private
         | 
| 38 38 |  | 
| 39 39 | 
             
              def name_label(element)
         | 
| 40 | 
            -
                if  | 
| 41 | 
            -
                  if element.attributes.has_key?("type") && name_labels.has_key?(element.attributes["type"].value)
         | 
| 42 | 
            -
                    return name_labels[element.attributes["type"].value]
         | 
| 43 | 
            -
                  end
         | 
| 40 | 
            +
                if !has_role?(element) || is_primary?(element) || has_author_or_creator_roles?(element)
         | 
| 44 41 | 
             
                  "Author/Creator"
         | 
| 45 42 | 
             
                else
         | 
| 46 43 | 
             
                  "Contributor"
         | 
| 47 44 | 
             
                end
         | 
| 48 45 | 
             
              end
         | 
| 49 | 
            -
             | 
| 50 | 
            -
              def  | 
| 46 | 
            +
             | 
| 47 | 
            +
              def has_role?(element)
         | 
| 48 | 
            +
                element.respond_to?(:role) and !element.role.empty?
         | 
| 49 | 
            +
              end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
              def is_primary?(element)
         | 
| 52 | 
            +
                element.attributes["usage"].respond_to?(:value) and
         | 
| 53 | 
            +
                element.attributes["usage"].value == "primary"
         | 
| 54 | 
            +
              end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
              def has_author_or_creator_roles?(element)
         | 
| 51 57 | 
             
                begin
         | 
| 52 58 | 
             
                  ["author", "aut", "creator", "cre", ""].include?(element.role.roleTerm.text.downcase)
         | 
| 53 59 | 
             
                rescue
         | 
| @@ -108,22 +114,26 @@ class ModsDisplay::Name < ModsDisplay::Field | |
| 108 114 | 
             
                         term.attributes["authority"].respond_to?(:value) and
         | 
| 109 115 | 
             
                         term.attributes["authority"].value == "marcrelator" and
         | 
| 110 116 | 
             
                         relator_codes.include?(term.text.strip)
         | 
| 111 | 
            -
                           term | 
| 112 | 
            -
                           term.content = relator_codes[term.text.strip]
         | 
| 113 | 
            -
                           term
         | 
| 117 | 
            +
                           relator_codes[term.text.strip]
         | 
| 114 118 | 
             
                      end
         | 
| 115 | 
            -
                    end.compact | 
| 119 | 
            +
                    end.compact
         | 
| 116 120 | 
             
                  end
         | 
| 117 121 | 
             
                end
         | 
| 118 122 | 
             
              end
         | 
| 119 123 |  | 
| 120 124 | 
             
              def unencoded_role_term(element)
         | 
| 121 | 
            -
                element.role. | 
| 122 | 
            -
                   | 
| 123 | 
            -
             | 
| 124 | 
            -
             | 
| 125 | 
            -
                   | 
| 126 | 
            -
                end
         | 
| 125 | 
            +
                roles = element.role.map do |role|
         | 
| 126 | 
            +
                  role.roleTerm.find do |term|
         | 
| 127 | 
            +
                    term.attributes["type"].respond_to?(:value) and
         | 
| 128 | 
            +
                    term.attributes["type"].value == "text"
         | 
| 129 | 
            +
                  end
         | 
| 130 | 
            +
                end.compact
         | 
| 131 | 
            +
                roles = element.role.map do |role|
         | 
| 132 | 
            +
                  role.roleTerm.find do |term|
         | 
| 133 | 
            +
                    !term.attributes["type"].respond_to?(:value)
         | 
| 134 | 
            +
                  end
         | 
| 135 | 
            +
                end.compact if roles.empty?
         | 
| 136 | 
            +
                roles.map{|t| t.text.strip }
         | 
| 127 137 | 
             
              end
         | 
| 128 138 |  | 
| 129 139 | 
             
              def unencoded_role_term?(element)
         | 
| @@ -141,15 +151,15 @@ class ModsDisplay::Name < ModsDisplay::Field | |
| 141 151 | 
             
              end
         | 
| 142 152 |  | 
| 143 153 | 
             
              class Person
         | 
| 144 | 
            -
                attr_accessor :name, : | 
| 154 | 
            +
                attr_accessor :name, :roles
         | 
| 145 155 | 
             
                def initialize(data)
         | 
| 146 | 
            -
                  @name = | 
| 147 | 
            -
                  @ | 
| 156 | 
            +
                  @name =  data[:name]
         | 
| 157 | 
            +
                  @roles = data[:roles] && !data[:roles].empty? ? data[:roles] : nil
         | 
| 148 158 | 
             
                end
         | 
| 149 159 |  | 
| 150 160 | 
             
                def to_s
         | 
| 151 161 | 
             
                  text = @name.dup
         | 
| 152 | 
            -
                  text << " (#{@ | 
| 162 | 
            +
                  text << " (#{@roles.join(', ')})" if @roles
         | 
| 153 163 | 
             
                  text
         | 
| 154 164 | 
             
                end
         | 
| 155 165 | 
             
              end
         | 
| @@ -47,7 +47,7 @@ class ModsDisplay::Subject < ModsDisplay::Field | |
| 47 47 | 
             
                        if @config.link and @config.hierarchical_link
         | 
| 48 48 | 
             
                          if val.is_a?(ModsDisplay::Name::Person)
         | 
| 49 49 | 
             
                            txt = link_to_value(val.name, buffer.join(' '))
         | 
| 50 | 
            -
                            txt << " (#{val. | 
| 50 | 
            +
                            txt << " (#{val.roles.join(', ')})" if val.roles
         | 
| 51 51 | 
             
                            sub_parts << txt
         | 
| 52 52 | 
             
                          else
         | 
| 53 53 | 
             
                            sub_parts << link_to_value(val, buffer.join(' '))
         | 
| @@ -55,7 +55,7 @@ class ModsDisplay::Subject < ModsDisplay::Field | |
| 55 55 | 
             
                        elsif @config.link
         | 
| 56 56 | 
             
                          if val.is_a?(ModsDisplay::Name::Person)
         | 
| 57 57 | 
             
                            txt = link_to_value(val.name)
         | 
| 58 | 
            -
                            txt << " (#{val. | 
| 58 | 
            +
                            txt << " (#{val.roles.join(', ')})" if val.roles
         | 
| 59 59 | 
             
                            sub_parts << txt
         | 
| 60 60 | 
             
                          else
         | 
| 61 61 | 
             
                            sub_parts << link_to_value(val.to_s)
         | 
| @@ -25,7 +25,7 @@ class ModsDisplay::Title < ModsDisplay::Field | |
| 25 25 | 
             
                    return_values << ModsDisplay::Values.new(:label => displayLabel(value) || title_label(value), :values => [[preParts, parts].compact.join(". ")])
         | 
| 26 26 | 
             
                  end
         | 
| 27 27 | 
             
                end
         | 
| 28 | 
            -
                return_values
         | 
| 28 | 
            +
                collapse_fields(return_values)
         | 
| 29 29 | 
             
              end
         | 
| 30 30 |  | 
| 31 31 | 
             
              private
         | 
    
        data/lib/mods_display/version.rb
    CHANGED
    
    
    
        data/spec/fields/imprint_spec.rb
    CHANGED
    
    | @@ -29,6 +29,7 @@ describe ModsDisplay::Imprint do | |
| 29 29 | 
             
                @questionable_date = Stanford::Mods::Record.new.from_str(questionable_date, false).origin_info
         | 
| 30 30 | 
             
                @inferred_date = Stanford::Mods::Record.new.from_str(inferred_date, false).origin_info
         | 
| 31 31 | 
             
                @three_imprint_dates = Stanford::Mods::Record.new.from_str(three_imprint_dates, false).origin_info
         | 
| 32 | 
            +
                @xx_country_code = Stanford::Mods::Record.new.from_str(xx_country_code, false).origin_info
         | 
| 32 33 | 
             
                @qualified_imprint_date = Stanford::Mods::Record.new.from_str(qualified_imprint_date, false).origin_info
         | 
| 33 34 | 
             
                @imprint_date_range = Stanford::Mods::Record.new.from_str(imprint_date_range, false).origin_info
         | 
| 34 35 | 
             
                @encoded_place = Stanford::Mods::Record.new.from_str(encoded_place, false).origin_info
         | 
| @@ -205,6 +206,11 @@ describe ModsDisplay::Imprint do | |
| 205 206 | 
             
                  fields.length.should == 1
         | 
| 206 207 | 
             
                  fields.first.values.should include "Netherlands"
         | 
| 207 208 | 
             
                end
         | 
| 209 | 
            +
                it "should ignore 'xx' country codes" do
         | 
| 210 | 
            +
                  fields = mods_display_imprint(@xx_country_code).fields
         | 
| 211 | 
            +
                  fields.length.should == 1
         | 
| 212 | 
            +
                  fields.first.values.should == ["1994"]
         | 
| 213 | 
            +
                end
         | 
| 208 214 | 
             
              end
         | 
| 209 215 | 
             
              describe "to_html" do
         | 
| 210 216 | 
             
                it "should return the display form if one is available" do
         | 
    
        data/spec/fields/name_spec.rb
    CHANGED
    
    | @@ -17,7 +17,7 @@ describe ModsDisplay::Language do | |
| 17 17 | 
             
              before(:all) do
         | 
| 18 18 | 
             
                @name = Stanford::Mods::Record.new.from_str("<mods><name><namePart>John Doe</namePart></name></mods>", false).plain_name
         | 
| 19 19 | 
             
                @blank_name = Stanford::Mods::Record.new.from_str("<mods><name><namePart/><role><roleTerm></roleTerm></role></name></mods>", false).plain_name
         | 
| 20 | 
            -
                @ | 
| 20 | 
            +
                @primary_name = Stanford::Mods::Record.new.from_str("<mods><name usage='primary'><namePart>John Doe</namePart><role><roleTerm>lithographer</roleTerm></role></name></mods>", false).plain_name
         | 
| 21 21 | 
             
                @contributor = Stanford::Mods::Record.new.from_str("<mods><name><namePart>John Doe</namePart><role><roleTerm>lithographer</roleTerm></role></name></mods>", false).plain_name
         | 
| 22 22 | 
             
                @encoded_role = Stanford::Mods::Record.new.from_str("<mods><name><namePart>John Doe</namePart><role><roleTerm type='code' authority='marcrelator'>ltg</roleTerm></role></name></mods>", false).plain_name
         | 
| 23 23 | 
             
                @mixed_role = Stanford::Mods::Record.new.from_str("<mods><name><role><roleTerm>publisher</roleTerm></role><namePart>John Doe</namePart><role><roleTerm type='text' authority='marcrelator'>engraver</roleTerm></role></name></mods>", false).plain_name
         | 
| @@ -25,15 +25,17 @@ describe ModsDisplay::Language do | |
| 25 25 | 
             
                @simple_toa = Stanford::Mods::Record.new.from_str("<mods><name><namePart>Unqualfieid</namePart><namePart type='termsOfAddress'>Ier, empereur</namePart><namePart type='date'>date1-date2</namePart><namePart type='given'>Given Name</namePart><namePart type='family'>Family Name</namePart></name></mods>", false).plain_name
         | 
| 26 26 | 
             
                @display_form = Stanford::Mods::Record.new.from_str("<mods><name><namePart>John Doe</namePart><displayForm>Mr. John Doe</displayForm></name></mods>", false).plain_name
         | 
| 27 27 | 
             
                @collapse_label = Stanford::Mods::Record.new.from_str("<mods><name><namePart>John Doe</namePart></name><name><namePart>Jane Doe</namePart></name></mods>", false).plain_name
         | 
| 28 | 
            -
                @complex_labels = Stanford::Mods::Record.new.from_str("<mods><name><namePart>John Doe</namePart></name><name><namePart>Jane Doe</namePart></name><name | 
| 28 | 
            +
                @complex_labels = Stanford::Mods::Record.new.from_str("<mods><name><namePart>John Doe</namePart></name><name><namePart>Jane Doe</namePart><role><roleTerm>lithographer</roleTerm></role></name><name><namePart>John Dough</namePart></name><name><namePart>Jane Dough</namePart></name></mods>", false).plain_name
         | 
| 29 | 
            +
                @complex_roles = Stanford::Mods::Record.new.from_str("<mods><name><namePart>John Doe</namePart><role><roleTerm type='text'>Depicted</roleTerm><roleTerm type='code'>dpt</roleTerm></role></name></mods>", false).plain_name
         | 
| 29 30 | 
             
                @name_with_role = Stanford::Mods::Record.new.from_str("<mods><name><namePart>John Doe</namePart><role><roleTerm type='text'>Depicted</roleTerm></role></name></mods>", false).plain_name
         | 
| 31 | 
            +
                @multiple_roles = Stanford::Mods::Record.new.from_str("<mods><name><namePart>John Doe</namePart><role><roleTerm type='text'>Depicted</roleTerm></role><role><roleTerm type='text'>Artist</roleTerm></role></name></mods>", false).plain_name
         | 
| 30 32 | 
             
              end
         | 
| 31 33 | 
             
              describe "label" do
         | 
| 32 | 
            -
                it "should default Author/Creator when  | 
| 34 | 
            +
                it "should default Author/Creator when no role is available" do
         | 
| 33 35 | 
             
                  mods_display_name(@name).fields.first.label.should == "Author/Creator"
         | 
| 34 36 | 
             
                end
         | 
| 35 | 
            -
                it "should  | 
| 36 | 
            -
                  mods_display_name(@ | 
| 37 | 
            +
                it "should label 'Author/Creator' for primary authors" do
         | 
| 38 | 
            +
                  mods_display_name(@primary_name).fields.first.label.should == "Author/Creator"
         | 
| 37 39 | 
             
                end
         | 
| 38 40 | 
             
                it "should apply contributor labeling to all non blank/author/creator roles" do
         | 
| 39 41 | 
             
                  mods_display_name(@contributor).fields.first.label.should == "Contributor"
         | 
| @@ -48,25 +50,6 @@ describe ModsDisplay::Language do | |
| 48 50 | 
             
                  fields.first.values.first.should be_a(ModsDisplay::Name::Person)
         | 
| 49 51 | 
             
                  fields.first.values.first.name.should == "Mr. John Doe"
         | 
| 50 52 | 
             
                end
         | 
| 51 | 
            -
                it "should get the role when present" do
         | 
| 52 | 
            -
                  fields = mods_display_name(@name_with_role).fields
         | 
| 53 | 
            -
                  fields.length.should == 1
         | 
| 54 | 
            -
                  fields.first.values.length.should == 1
         | 
| 55 | 
            -
                  fields.first.values.first.should be_a(ModsDisplay::Name::Person)
         | 
| 56 | 
            -
                  fields.first.values.first.role.should == "Depicted"
         | 
| 57 | 
            -
                end
         | 
| 58 | 
            -
                it "should decode encoded roleTerms when no text (or non-typed) roleTerm is available" do
         | 
| 59 | 
            -
                  fields = mods_display_name(@encoded_role).fields
         | 
| 60 | 
            -
                  fields.length.should == 1
         | 
| 61 | 
            -
                  fields.first.values.length.should == 1
         | 
| 62 | 
            -
                  fields.first.values.first.to_s.should == "John Doe (Lithographer)"
         | 
| 63 | 
            -
                end
         | 
| 64 | 
            -
                it "should get the type='text' role before an untyped role" do
         | 
| 65 | 
            -
                  fields = mods_display_name(@mixed_role).fields
         | 
| 66 | 
            -
                  fields.length.should == 1
         | 
| 67 | 
            -
                  fields.first.values.length.should == 1
         | 
| 68 | 
            -
                  fields.first.values.first.role.should == "engraver"
         | 
| 69 | 
            -
                end
         | 
| 70 53 | 
             
                it "should not add blank names" do
         | 
| 71 54 | 
             
                  mods_display_name(@blank_name).fields.should == []
         | 
| 72 55 | 
             
                end
         | 
| @@ -97,18 +80,58 @@ describe ModsDisplay::Language do | |
| 97 80 |  | 
| 98 81 | 
             
                  fields.length.should == 3
         | 
| 99 82 | 
             
                  fields.first.label.should == "Author/Creator"
         | 
| 100 | 
            -
                  fields.first.values.length.should ==  | 
| 101 | 
            -
                  fields.first.values. | 
| 102 | 
            -
             | 
| 103 | 
            -
                   | 
| 104 | 
            -
             | 
| 105 | 
            -
                  fields[1].label.should == "Meeting"
         | 
| 83 | 
            +
                  fields.first.values.length.should == 1
         | 
| 84 | 
            +
                  fields.first.values.first.to_s.should == "John Doe"
         | 
| 85 | 
            +
                  
         | 
| 86 | 
            +
                  fields[1].label.should == "Contributor"
         | 
| 106 87 | 
             
                  fields[1].values.length.should == 1
         | 
| 107 | 
            -
                  fields[1].values.first. | 
| 88 | 
            +
                  fields[1].values.first.name.should == "Jane Doe"
         | 
| 89 | 
            +
                  fields[1].values.first.roles.should == ["lithographer"]
         | 
| 108 90 |  | 
| 109 91 | 
             
                  fields.last.label.should == "Author/Creator"
         | 
| 110 | 
            -
                  fields.last.values.length.should ==  | 
| 111 | 
            -
                  fields.last.values. | 
| 92 | 
            +
                  fields.last.values.length.should == 2
         | 
| 93 | 
            +
                  fields.last.values.each do |val|
         | 
| 94 | 
            +
                    ["Jane Dough", "John Dough"].should include val.to_s
         | 
| 95 | 
            +
                  end
         | 
| 96 | 
            +
                end
         | 
| 97 | 
            +
                describe "roles" do
         | 
| 98 | 
            +
                  it "should get the role when present" do
         | 
| 99 | 
            +
                    fields = mods_display_name(@name_with_role).fields
         | 
| 100 | 
            +
                    fields.length.should == 1
         | 
| 101 | 
            +
                    fields.first.values.length.should == 1
         | 
| 102 | 
            +
                    fields.first.values.first.should be_a(ModsDisplay::Name::Person)
         | 
| 103 | 
            +
                    fields.first.values.first.roles.should == ["Depicted"]
         | 
| 104 | 
            +
                  end
         | 
| 105 | 
            +
                  it "should decode encoded roleTerms when no text (or non-typed) roleTerm is available" do
         | 
| 106 | 
            +
                    fields = mods_display_name(@encoded_role).fields
         | 
| 107 | 
            +
                    fields.length.should == 1
         | 
| 108 | 
            +
                    fields.first.values.length.should == 1
         | 
| 109 | 
            +
                    fields.first.values.first.to_s.should == "John Doe (Lithographer)"
         | 
| 110 | 
            +
                  end
         | 
| 111 | 
            +
                  it "should get the type='text' role before an untyped role" do
         | 
| 112 | 
            +
                    fields = mods_display_name(@mixed_role).fields
         | 
| 113 | 
            +
                    fields.length.should == 1
         | 
| 114 | 
            +
                    fields.first.values.length.should == 1
         | 
| 115 | 
            +
                    fields.first.values.first.roles.should == ["engraver"]
         | 
| 116 | 
            +
                  end
         | 
| 117 | 
            +
                  it "should be handled correctly when there are more than one" do
         | 
| 118 | 
            +
                    fields = mods_display_name(@multiple_roles).fields
         | 
| 119 | 
            +
                    fields.length.should == 1
         | 
| 120 | 
            +
                    fields.first.values.length.should == 1
         | 
| 121 | 
            +
                    fields.first.values.first.roles.should == ["Depicted", "Artist"]
         | 
| 122 | 
            +
                  end
         | 
| 123 | 
            +
                  it "should handle code and text roleTerms together correctly" do
         | 
| 124 | 
            +
                    fields = mods_display_name(@complex_roles).fields
         | 
| 125 | 
            +
                    fields.length.should == 1
         | 
| 126 | 
            +
                    fields.first.values.length.should == 1
         | 
| 127 | 
            +
                    fields.first.values.first.roles.should == ["Depicted"]
         | 
| 128 | 
            +
                  end
         | 
| 129 | 
            +
                  it "should comma seperate multiple roles" do
         | 
| 130 | 
            +
                    fields = mods_display_name(@multiple_roles).fields
         | 
| 131 | 
            +
                    fields.length.should == 1
         | 
| 132 | 
            +
                    fields.first.values.length.should == 1
         | 
| 133 | 
            +
                    fields.first.values.first.to_s.should == "John Doe (Depicted, Artist)"
         | 
| 134 | 
            +
                  end
         | 
| 112 135 | 
             
                end
         | 
| 113 136 | 
             
              end
         | 
| 114 137 |  | 
    
        data/spec/fields/subject_spec.rb
    CHANGED
    
    | @@ -64,7 +64,7 @@ describe ModsDisplay::Subject do | |
| 64 64 | 
             
                  fields.length.should == 1
         | 
| 65 65 | 
             
                  fields.first.values.first.first.should be_a(ModsDisplay::Name::Person)
         | 
| 66 66 | 
             
                  fields.first.values.first.first.name.should == "John Doe"
         | 
| 67 | 
            -
                  fields.first.values.first.first. | 
| 67 | 
            +
                  fields.first.values.first.first.roles.should == ["Depicted"]
         | 
| 68 68 | 
             
                end
         | 
| 69 69 | 
             
                it "should link the name (and not the role) correctly" do
         | 
| 70 70 | 
             
                  html = mods_display_subject(@name_subject).to_html
         | 
    
        data/spec/fields/title_spec.rb
    CHANGED
    
    | @@ -11,6 +11,7 @@ describe ModsDisplay::Title do | |
| 11 11 | 
             
                @reverse_title_parts = Stanford::Mods::Record.new.from_str("<mods><titleInfo><nonSort>The</nonSort><title>Title</title><subTitle>For</subTitle><partNumber>Part 62</partNumber><partName>Something</partName></titleInfo></mods>", false).title_info
         | 
| 12 12 | 
             
                @display_label = Stanford::Mods::Record.new.from_str("<mods><titleInfo displayLabel='MyTitle'><title>Title</title></titleInfo></mods>", false).title_info
         | 
| 13 13 | 
             
                @display_form = Stanford::Mods::Record.new.from_str("<mods><titleInfo><title>Title</title><displayForm>The Title of This Item</displayForm></titleInfo></mods>", false).title_info
         | 
| 14 | 
            +
                @multi_label = Stanford::Mods::Record.new.from_str("<mods><titleInfo><title>Main Title</title></titleInfo><titleInfo type='alternative'><title>Alt Title</title></titleInfo><titleInfo type='uniform'><title>Uniform Title</title></titleInfo><titleInfo type='alternative'><title>Another Alt Title</title></titleInfo><titleInfo type='alternative'><title>Yet Another Alt Title</title></titleInfo></mods>", false).title_info
         | 
| 14 15 | 
             
                @alt_title = Stanford::Mods::Record.new.from_str("<mods><titleInfo type='alternative'><title>Title</title></titleInfo></mods>", false).title_info
         | 
| 15 16 | 
             
              end
         | 
| 16 17 | 
             
              describe "labels" do
         | 
| @@ -23,6 +24,15 @@ describe ModsDisplay::Title do | |
| 23 24 | 
             
                it "should return the label held in the displayLabel attribute of the titleInfo element when available" do
         | 
| 24 25 | 
             
                  mods_display_title(@display_label).fields.first.label.should == "MyTitle"
         | 
| 25 26 | 
             
                end
         | 
| 27 | 
            +
                it "should collapse adjacent identical labels" do
         | 
| 28 | 
            +
                  fields = mods_display_title(@multi_label).fields
         | 
| 29 | 
            +
                  fields.length.should == 4
         | 
| 30 | 
            +
                  fields[0].label.should == "Title"
         | 
| 31 | 
            +
                  fields[1].label.should == "Alternative title"
         | 
| 32 | 
            +
                  fields[2].label.should == "Uniform title"
         | 
| 33 | 
            +
                  fields[3].label.should == "Alternative title"
         | 
| 34 | 
            +
                  fields[3].values.should == ["Another Alt Title", "Yet Another Alt Title"]
         | 
| 35 | 
            +
                end
         | 
| 26 36 | 
             
              end
         | 
| 27 37 | 
             
              describe "fields" do
         | 
| 28 38 | 
             
                it "should return an array of label/value objects" do
         | 
| @@ -224,6 +224,18 @@ module ImprintFixtures | |
| 224 224 | 
             
                  </mods>
         | 
| 225 225 | 
             
                MODS
         | 
| 226 226 | 
             
              end
         | 
| 227 | 
            +
              def xx_country_code
         | 
| 228 | 
            +
                <<-MODS
         | 
| 229 | 
            +
                  <mods>
         | 
| 230 | 
            +
                    <originInfo>
         | 
| 231 | 
            +
                      <place>
         | 
| 232 | 
            +
                        <placeTerm type="code" authority="marccountry">xx</placeTerm>
         | 
| 233 | 
            +
                      </place>
         | 
| 234 | 
            +
                      <dateIssued>1994</dateIssued>
         | 
| 235 | 
            +
                    </originInfo>
         | 
| 236 | 
            +
                  </mods>
         | 
| 237 | 
            +
                MODS
         | 
| 238 | 
            +
              end
         | 
| 227 239 | 
             
              def encoded_dates
         | 
| 228 240 | 
             
                <<-MODS
         | 
| 229 241 | 
             
                  <mods>
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: mods_display
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.2. | 
| 4 | 
            +
              version: 0.2.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Jessie Keck
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2013- | 
| 11 | 
            +
            date: 2013-11-20 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: stanford-mods
         |