mods 0.0.16 → 0.0.17
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.
- data/README.rdoc +17 -16
- data/lib/mods/nom_terminology.rb +442 -342
- data/lib/mods/record.rb +12 -16
- data/lib/mods/version.rb +1 -1
- data/spec/name_spec.rb +256 -2
- data/spec/record_spec.rb +31 -3
- metadata +4 -4
    
        data/lib/mods/record.rb
    CHANGED
    
    | @@ -78,19 +78,19 @@ module Mods | |
| 78 78 | 
             
                  @mods_ng_xml.title_info.sort_title.find { |n| !n.nil? }
         | 
| 79 79 | 
             
                end
         | 
| 80 80 |  | 
| 81 | 
            -
                #  | 
| 82 | 
            -
                #    | 
| 83 | 
            -
                #   otherwise, return all nameParts concatenated together
         | 
| 84 | 
            -
                # @return Array of Strings, each containing the above described string
         | 
| 81 | 
            +
                # @return Array of Strings, each containing the computed display value of a personal name
         | 
| 82 | 
            +
                #   (see nom_terminology for algorithm)
         | 
| 85 83 | 
             
                def personal_names
         | 
| 86 84 | 
             
                  @mods_ng_xml.personal_name.map { |n|
         | 
| 87 | 
            -
                     | 
| 88 | 
            -
             | 
| 89 | 
            -
             | 
| 90 | 
            -
             | 
| 91 | 
            -
             | 
| 92 | 
            -
             | 
| 93 | 
            -
             | 
| 85 | 
            +
                    n.display_value
         | 
| 86 | 
            +
                  }
         | 
| 87 | 
            +
                end
         | 
| 88 | 
            +
             | 
| 89 | 
            +
                # @return Array of Strings, each containing the computed display value of a personal name
         | 
| 90 | 
            +
                #   (see nom_terminology for algorithm)
         | 
| 91 | 
            +
                def personal_names_w_dates
         | 
| 92 | 
            +
                  @mods_ng_xml.personal_name.map { |n|
         | 
| 93 | 
            +
                    n.display_value_w_date
         | 
| 94 94 | 
             
                  }
         | 
| 95 95 | 
             
                end
         | 
| 96 96 |  | 
| @@ -99,11 +99,7 @@ module Mods | |
| 99 99 | 
             
                # @return Array of Strings, each containing the above described string
         | 
| 100 100 | 
             
                def corporate_names
         | 
| 101 101 | 
             
                  @mods_ng_xml.corporate_name.map { |n|
         | 
| 102 | 
            -
                     | 
| 103 | 
            -
                      n.displayForm.text
         | 
| 104 | 
            -
                    else
         | 
| 105 | 
            -
                      n.namePart.text 
         | 
| 106 | 
            -
                    end
         | 
| 102 | 
            +
                    n.display_value
         | 
| 107 103 | 
             
                  }
         | 
| 108 104 | 
             
                end
         | 
| 109 105 |  | 
    
        data/lib/mods/version.rb
    CHANGED
    
    
    
        data/spec/name_spec.rb
    CHANGED
    
    | @@ -74,7 +74,7 @@ describe "Mods <name> Element" do | |
| 74 74 | 
             
                      @mods_rec.personal_name.role.roleTerm.authority.should == ["marcrelator"]
         | 
| 75 75 | 
             
                    end
         | 
| 76 76 | 
             
                  end # roles
         | 
| 77 | 
            -
                end # WITH namespaces
         | 
| 77 | 
            +
                end # WITH namespaces (personal name)
         | 
| 78 78 |  | 
| 79 79 | 
             
                context "WITHOUT namespaces" do
         | 
| 80 80 | 
             
                  it "should recognize child elements" do
         | 
| @@ -215,7 +215,7 @@ describe "Mods <name> Element" do | |
| 215 215 | 
             
                    end
         | 
| 216 216 | 
             
                  end
         | 
| 217 217 |  | 
| 218 | 
            -
                end # context WITH namespaces
         | 
| 218 | 
            +
                end # context WITH namespaces (plain_name)
         | 
| 219 219 |  | 
| 220 220 | 
             
                context "WITHOUT namespaces" do
         | 
| 221 221 | 
             
                  it "should recognize child elements" do
         | 
| @@ -266,6 +266,260 @@ describe "Mods <name> Element" do | |
| 266 266 | 
             
                MARC_RELATOR['drt'].should == "Director"
         | 
| 267 267 | 
             
              end
         | 
| 268 268 |  | 
| 269 | 
            +
              context "display_value and display_value_w_date" do
         | 
| 270 | 
            +
                before(:all) do
         | 
| 271 | 
            +
                  @disp_form = 'q'
         | 
| 272 | 
            +
                  @pname1_xml = "<mods #{@ns_decl}><name type='personal'>
         | 
| 273 | 
            +
                          <namePart type='given'>John</namePart>
         | 
| 274 | 
            +
                          <namePart type='family'>Huston</namePart>
         | 
| 275 | 
            +
                          <displayForm>#{@disp_form}</displayForm>
         | 
| 276 | 
            +
                     </name></mods>"
         | 
| 277 | 
            +
                  @cname_xml = "<mods #{@ns_decl}><name type='corporate'>
         | 
| 278 | 
            +
                          <namePart>Watchful Eye</namePart>
         | 
| 279 | 
            +
                      </name></mods>"
         | 
| 280 | 
            +
                  @affl = 'affliation'
         | 
| 281 | 
            +
                  @desc = 'description'
         | 
| 282 | 
            +
                  @role = 'role'
         | 
| 283 | 
            +
                  @name_xml = "<mods #{@ns_decl}><name>
         | 
| 284 | 
            +
                            <namePart>Exciting Prints</namePart>
         | 
| 285 | 
            +
                            <affiliation>#{@affl}</affiliation>
         | 
| 286 | 
            +
                            <description>#{@desc}</description>
         | 
| 287 | 
            +
                            <role><roleTerm type='text'>#{@role}</roleTerm></role>
         | 
| 288 | 
            +
                        </name></mods>"
         | 
| 289 | 
            +
                  @namepart_xml = "<mods #{@ns_decl}><name>
         | 
| 290 | 
            +
                            <namePart>Suzy</namePart>
         | 
| 291 | 
            +
                            <namePart type='date'>1920-</namePart>
         | 
| 292 | 
            +
                        </name></mods>"
         | 
| 293 | 
            +
                end
         | 
| 294 | 
            +
                context "WITH namespaces" do
         | 
| 295 | 
            +
                  before(:all) do
         | 
| 296 | 
            +
                    @mods_pname1 = Mods::Record.new.from_str(@pname1_xml)
         | 
| 297 | 
            +
                    @mods_cname = Mods::Record.new.from_str(@cname_xml)
         | 
| 298 | 
            +
                    @mods_name = Mods::Record.new.from_str(@name_xml)
         | 
| 299 | 
            +
                    @mods_namepart_date = Mods::Record.new.from_str(@namepart_xml)        
         | 
| 300 | 
            +
                  end
         | 
| 301 | 
            +
                  it "should be a string value for each name, not an Array" do
         | 
| 302 | 
            +
                    @mods_name.plain_name.first.display_value.should be_an_instance_of(String)
         | 
| 303 | 
            +
                    @mods_name.plain_name.first.display_value_w_date.should be_an_instance_of(String)
         | 
| 304 | 
            +
                  end
         | 
| 305 | 
            +
                  it "should return nil when there is no display_value" do
         | 
| 306 | 
            +
                    x = "<mods #{@ns_decl}><name>
         | 
| 307 | 
            +
                              <namePart></namePart>
         | 
| 308 | 
            +
                          </name></mods>"
         | 
| 309 | 
            +
                    r = Mods::Record.new.from_str(x)
         | 
| 310 | 
            +
                    r.plain_name.first.display_value.should == nil
         | 
| 311 | 
            +
                  end
         | 
| 312 | 
            +
                  it "should be applicable to all name term flavors (plain_name, personal_name, corporate_name ...)" do
         | 
| 313 | 
            +
                    @mods_name.plain_name.first.display_value.should_not == nil
         | 
| 314 | 
            +
                    @mods_name.plain_name.first.display_value_w_date.should_not == nil
         | 
| 315 | 
            +
                    @mods_pname1.personal_name.first.display_value.should_not == nil
         | 
| 316 | 
            +
                    @mods_pname1.personal_name.first.display_value_w_date.should_not == nil
         | 
| 317 | 
            +
                    @mods_cname.corporate_name.first.display_value.should_not == nil
         | 
| 318 | 
            +
                    @mods_cname.corporate_name.first.display_value_w_date.should_not == nil
         | 
| 319 | 
            +
                  end
         | 
| 320 | 
            +
                  it "should not include <affiliation> text" do
         | 
| 321 | 
            +
                    @mods_name.plain_name.first.display_value.should_not =~ Regexp.new(@affl)
         | 
| 322 | 
            +
                  end
         | 
| 323 | 
            +
                  it "should not include <description> text" do
         | 
| 324 | 
            +
                    @mods_name.plain_name.first.display_value.should_not =~  Regexp.new(@desc)
         | 
| 325 | 
            +
                  end
         | 
| 326 | 
            +
                  it "should not include <role> info" do
         | 
| 327 | 
            +
                    @mods_name.plain_name.first.display_value.should_not =~  Regexp.new(@role)
         | 
| 328 | 
            +
                  end
         | 
| 329 | 
            +
                  it "should be the value of the <displayForm> subelement if it exists" do
         | 
| 330 | 
            +
                    @mods_pname1.plain_name.first.display_value.should == @disp_form
         | 
| 331 | 
            +
                    x = "<mods #{@ns_decl}><name type='personal'>
         | 
| 332 | 
            +
                          	  <namePart>Alterman, Eric</namePart>
         | 
| 333 | 
            +
                          	  <displayForm>Eric Alterman</displayForm>
         | 
| 334 | 
            +
                          </name><mods>"
         | 
| 335 | 
            +
                    r = Mods::Record.new.from_str(x)         
         | 
| 336 | 
            +
                    r.plain_name.first.display_value.should == 'Eric Alterman'
         | 
| 337 | 
            +
                  end
         | 
| 338 | 
            +
                  it "display_value should not include <namePart type='date'>" do
         | 
| 339 | 
            +
                    @mods_namepart_date.plain_name.first.display_value.should == 'Suzy'
         | 
| 340 | 
            +
                  end
         | 
| 341 | 
            +
                  it "date text should be added to display_value_w_date when it is available" do
         | 
| 342 | 
            +
                    @mods_namepart_date.plain_name.first.display_value_w_date.should == 'Suzy, 1920-'
         | 
| 343 | 
            +
                  end
         | 
| 344 | 
            +
                  it "date text should not be added to display_value_w_dates if dates are already included" do
         | 
| 345 | 
            +
                    x = "<mods #{@ns_decl}><name>
         | 
| 346 | 
            +
                              <namePart>Woolf, Virginia</namePart>
         | 
| 347 | 
            +
              	              <namePart type='date'>1882-1941</namePart>
         | 
| 348 | 
            +
                              <displayForm>Woolf, Virginia, 1882-1941</namePart>
         | 
| 349 | 
            +
                          </name></mods>"
         | 
| 350 | 
            +
                    r = Mods::Record.new.from_str(x) 
         | 
| 351 | 
            +
                    r.plain_name.first.display_value_w_date.should == 'Woolf, Virginia, 1882-1941'
         | 
| 352 | 
            +
                  end
         | 
| 353 | 
            +
                  context "personal names" do
         | 
| 354 | 
            +
                    before(:all) do
         | 
| 355 | 
            +
                      @d = '1920-2005'
         | 
| 356 | 
            +
                      x = "<mods #{@ns_decl}><name type='personal'>
         | 
| 357 | 
            +
                            	<namePart type='given'>John Paul</namePart>
         | 
| 358 | 
            +
                            	<namePart type='termsOfAddress'>II</namePart>
         | 
| 359 | 
            +
                            	<namePart type='termsOfAddress'>Pope</namePart>
         | 
| 360 | 
            +
                            	<namePart type='date'>#{@d}</namePart>
         | 
| 361 | 
            +
                          </name></mods>"
         | 
| 362 | 
            +
                      @pope = Mods::Record.new.from_str(x) 
         | 
| 363 | 
            +
                      x = "<mods #{@ns_decl}><name type='personal'>
         | 
| 364 | 
            +
                                <namePart>Crusty</namePart>
         | 
| 365 | 
            +
                                <namePart>The Clown</namePart>
         | 
| 366 | 
            +
                                <namePart type='date'>#{@d}</namePart>
         | 
| 367 | 
            +
                            </name></mods>"
         | 
| 368 | 
            +
                      @pname2 = Mods::Record.new.from_str(x)
         | 
| 369 | 
            +
                    end
         | 
| 370 | 
            +
                    # use the displayForm of a personal name if present
         | 
| 371 | 
            +
                    #   if no displayForm, try to make a string from family name and given name "family_name, given_name"
         | 
| 372 | 
            +
                    #   otherwise, return all nameParts concatenated together
         | 
| 373 | 
            +
                    # @return Array of Strings, each containing the above described string
         | 
| 374 | 
            +
                    it "should be [family name], [given name] if they are present" do
         | 
| 375 | 
            +
                      x = "<mods #{@ns_decl}><name type='personal'>
         | 
| 376 | 
            +
                              <namePart type='given'>John</namePart>
         | 
| 377 | 
            +
                              <namePart type='family'>Huston</namePart>
         | 
| 378 | 
            +
                         </name></mods>"
         | 
| 379 | 
            +
                      r = Mods::Record.new.from_str(x)
         | 
| 380 | 
            +
                      r.personal_name.first.display_value.should == 'Huston, John'
         | 
| 381 | 
            +
                      @pope.personal_name.first.display_value.should == 'John Paul II, Pope'
         | 
| 382 | 
            +
                    end
         | 
| 383 | 
            +
                    it "should be concatenation of untyped <namePart> elements if there is no family or given name" do
         | 
| 384 | 
            +
                      @pname2.personal_name.first.display_value.should == 'Crusty The Clown'
         | 
| 385 | 
            +
                    end
         | 
| 386 | 
            +
                    it "should include <termOfAddress> elements, in order, comma separated" do
         | 
| 387 | 
            +
                      @pope.personal_name.first.display_value.should == 'John Paul II, Pope'
         | 
| 388 | 
            +
                    end
         | 
| 389 | 
            +
                    it "display_value should not include date" do
         | 
| 390 | 
            +
                      @pope.personal_name.first.display_value.should_not =~ Regexp.new(@d)
         | 
| 391 | 
            +
                    end
         | 
| 392 | 
            +
                    it "date should be included in display_value_w_date" do
         | 
| 393 | 
            +
                      @pope.personal_name.first.display_value_w_date.should == "John Paul II, Pope, #{@d}"
         | 
| 394 | 
            +
                    end
         | 
| 395 | 
            +
                  end
         | 
| 396 | 
            +
                  context "not personal name (e.g. corporate)" do
         | 
| 397 | 
            +
                    it "should be the value of non-date nameParts concatenated" do
         | 
| 398 | 
            +
                      x = "<mods #{@ns_decl}><name type='corporate'>
         | 
| 399 | 
            +
                        	<namePart>United States</namePart>
         | 
| 400 | 
            +
                        	<namePart>Court of Appeals (2nd Circuit)</namePart>
         | 
| 401 | 
            +
                      </name></mods>"
         | 
| 402 | 
            +
                      r = Mods::Record.new.from_str(x)
         | 
| 403 | 
            +
                      r.corporate_name.first.display_value.should == 'United States Court of Appeals (2nd Circuit)'
         | 
| 404 | 
            +
                    end
         | 
| 405 | 
            +
                  end
         | 
| 406 | 
            +
                end # WITH namespaces
         | 
| 407 | 
            +
             | 
| 408 | 
            +
                context "WITHOUT namespaces" do
         | 
| 409 | 
            +
                  before(:all) do
         | 
| 410 | 
            +
                    @mods_pname1 = Mods::Record.new.from_str(@pname1_xml.sub(" #{@ns_decl}", ''), false)
         | 
| 411 | 
            +
                    @mods_cname = Mods::Record.new.from_str(@cname_xml.sub(" #{@ns_decl}", ''), false)
         | 
| 412 | 
            +
                    @mods_name = Mods::Record.new.from_str(@name_xml.sub(" #{@ns_decl}", ''), false)
         | 
| 413 | 
            +
                    @mods_namepart_date = Mods::Record.new.from_str(@namepart_xml.sub(" #{@ns_decl}", ''), false)
         | 
| 414 | 
            +
                  end
         | 
| 415 | 
            +
                  it "should be a string value for each name, not an Array" do
         | 
| 416 | 
            +
                    @mods_name.plain_name.first.display_value.should be_an_instance_of(String)
         | 
| 417 | 
            +
                    @mods_name.plain_name.first.display_value_w_date.should be_an_instance_of(String)
         | 
| 418 | 
            +
                  end
         | 
| 419 | 
            +
                  it "should return nil when there is no display_value" do
         | 
| 420 | 
            +
                    x = "<mods><name>
         | 
| 421 | 
            +
                              <namePart></namePart>
         | 
| 422 | 
            +
                          </name></mods>"
         | 
| 423 | 
            +
                    r = Mods::Record.new.from_str(x, false)
         | 
| 424 | 
            +
                    r.plain_name.first.display_value.should == nil
         | 
| 425 | 
            +
                  end
         | 
| 426 | 
            +
                  it "should be applicable to all name term flavors (plain_name, personal_name, corporate_name ...)" do
         | 
| 427 | 
            +
                    @mods_name.plain_name.first.display_value.should_not == nil
         | 
| 428 | 
            +
                    @mods_name.plain_name.first.display_value_w_date.should_not == nil
         | 
| 429 | 
            +
                    @mods_pname1.personal_name.first.display_value.should_not == nil
         | 
| 430 | 
            +
                    @mods_pname1.personal_name.first.display_value_w_date.should_not == nil
         | 
| 431 | 
            +
                    @mods_cname.corporate_name.first.display_value.should_not == nil
         | 
| 432 | 
            +
                    @mods_cname.corporate_name.first.display_value_w_date.should_not == nil
         | 
| 433 | 
            +
                  end
         | 
| 434 | 
            +
                  it "should not include <affiliation> text" do
         | 
| 435 | 
            +
                    @mods_name.plain_name.first.display_value.should_not =~ Regexp.new(@affl)
         | 
| 436 | 
            +
                  end
         | 
| 437 | 
            +
                  it "should not include <description> text" do
         | 
| 438 | 
            +
                    @mods_name.plain_name.first.display_value.should_not =~  Regexp.new(@desc)
         | 
| 439 | 
            +
                  end
         | 
| 440 | 
            +
                  it "should not include <role> info" do
         | 
| 441 | 
            +
                    @mods_name.plain_name.first.display_value.should_not =~  Regexp.new(@role)
         | 
| 442 | 
            +
                  end
         | 
| 443 | 
            +
                  it "should be the value of the <displayForm> subelement if it exists" do
         | 
| 444 | 
            +
                    @mods_pname1.plain_name.first.display_value.should == @disp_form
         | 
| 445 | 
            +
                    x = "<mods><name type='personal'>
         | 
| 446 | 
            +
                          	  <namePart>Alterman, Eric</namePart>
         | 
| 447 | 
            +
                          	  <displayForm>Eric Alterman</displayForm>
         | 
| 448 | 
            +
                          </name><mods>"
         | 
| 449 | 
            +
                    r = Mods::Record.new.from_str(x, false)         
         | 
| 450 | 
            +
                    r.plain_name.first.display_value.should == 'Eric Alterman'
         | 
| 451 | 
            +
                  end
         | 
| 452 | 
            +
                  it "display_value should not include <namePart type='date'>" do
         | 
| 453 | 
            +
                    @mods_namepart_date.plain_name.first.display_value.should == 'Suzy'
         | 
| 454 | 
            +
                  end
         | 
| 455 | 
            +
                  it "date text should be added to display_value_w_date when it is available" do
         | 
| 456 | 
            +
                    @mods_namepart_date.plain_name.first.display_value_w_date.should == 'Suzy, 1920-'
         | 
| 457 | 
            +
                  end
         | 
| 458 | 
            +
                  it "date text should not be added to display_value_w_dates if dates are already included" do
         | 
| 459 | 
            +
                    x = "<mods><name>
         | 
| 460 | 
            +
                              <namePart>Woolf, Virginia</namePart>
         | 
| 461 | 
            +
              	              <namePart type='date'>1882-1941</namePart>
         | 
| 462 | 
            +
                              <displayForm>Woolf, Virginia, 1882-1941</namePart>
         | 
| 463 | 
            +
                          </name></mods>"
         | 
| 464 | 
            +
                    r = Mods::Record.new.from_str(x, false) 
         | 
| 465 | 
            +
                    r.plain_name.first.display_value_w_date.should == 'Woolf, Virginia, 1882-1941'
         | 
| 466 | 
            +
                  end
         | 
| 467 | 
            +
                  context "personal names" do
         | 
| 468 | 
            +
                    before(:all) do
         | 
| 469 | 
            +
                      @d = '1920-2005'
         | 
| 470 | 
            +
                      x = "<mods><name type='personal'>
         | 
| 471 | 
            +
                            	<namePart type='given'>John Paul</namePart>
         | 
| 472 | 
            +
                            	<namePart type='termsOfAddress'>II</namePart>
         | 
| 473 | 
            +
                            	<namePart type='termsOfAddress'>Pope</namePart>
         | 
| 474 | 
            +
                            	<namePart type='date'>#{@d}</namePart>
         | 
| 475 | 
            +
                          </name></mods>"
         | 
| 476 | 
            +
                      @pope = Mods::Record.new.from_str(x, false) 
         | 
| 477 | 
            +
                      x = "<mods><name type='personal'>
         | 
| 478 | 
            +
                                <namePart>Crusty</namePart>
         | 
| 479 | 
            +
                                <namePart>The Clown</namePart>
         | 
| 480 | 
            +
                                <namePart type='date'>#{@d}</namePart>
         | 
| 481 | 
            +
                            </name></mods>"
         | 
| 482 | 
            +
                      @pname2 = Mods::Record.new.from_str(x, false)
         | 
| 483 | 
            +
                    end
         | 
| 484 | 
            +
                    # use the displayForm of a personal name if present
         | 
| 485 | 
            +
                    #   if no displayForm, try to make a string from family name and given name "family_name, given_name"
         | 
| 486 | 
            +
                    #   otherwise, return all nameParts concatenated together
         | 
| 487 | 
            +
                    # @return Array of Strings, each containing the above described string
         | 
| 488 | 
            +
                    it "should be [family name], [given name] if they are present" do
         | 
| 489 | 
            +
                      x = "<mods><name type='personal'>
         | 
| 490 | 
            +
                              <namePart type='given'>John</namePart>
         | 
| 491 | 
            +
                              <namePart type='family'>Huston</namePart>
         | 
| 492 | 
            +
                         </name></mods>"
         | 
| 493 | 
            +
                      r = Mods::Record.new.from_str(x, false)
         | 
| 494 | 
            +
                      r.personal_name.first.display_value.should == 'Huston, John'
         | 
| 495 | 
            +
                      @pope.personal_name.first.display_value.should == 'John Paul II, Pope'
         | 
| 496 | 
            +
                    end
         | 
| 497 | 
            +
                    it "should be concatenation of untyped <namePart> elements if there is no family or given name" do
         | 
| 498 | 
            +
                      @pname2.personal_name.first.display_value.should == 'Crusty The Clown'
         | 
| 499 | 
            +
                    end
         | 
| 500 | 
            +
                    it "should include <termOfAddress> elements, in order, comma separated" do
         | 
| 501 | 
            +
                      @pope.personal_name.first.display_value.should == 'John Paul II, Pope'
         | 
| 502 | 
            +
                    end
         | 
| 503 | 
            +
                    it "display_value should not include date" do
         | 
| 504 | 
            +
                      @pope.personal_name.first.display_value.should_not =~ Regexp.new(@d)
         | 
| 505 | 
            +
                    end
         | 
| 506 | 
            +
                    it "date should be included in display_value_w_date" do
         | 
| 507 | 
            +
                      @pope.personal_name.first.display_value_w_date.should == "John Paul II, Pope, #{@d}"
         | 
| 508 | 
            +
                    end
         | 
| 509 | 
            +
                  end
         | 
| 510 | 
            +
                  context "not personal name (e.g. corporate)" do
         | 
| 511 | 
            +
                    it "should be the value of non-date nameParts concatenated" do
         | 
| 512 | 
            +
                      x = "<mods><name type='corporate'>
         | 
| 513 | 
            +
                        	<namePart>United States</namePart>
         | 
| 514 | 
            +
                        	<namePart>Court of Appeals (2nd Circuit)</namePart>
         | 
| 515 | 
            +
                      </name></mods>"
         | 
| 516 | 
            +
                      r = Mods::Record.new.from_str(x, false)
         | 
| 517 | 
            +
                      r.corporate_name.first.display_value.should == 'United States Court of Appeals (2nd Circuit)'
         | 
| 518 | 
            +
                    end
         | 
| 519 | 
            +
                  end
         | 
| 520 | 
            +
                end # WITHOUT namespaces
         | 
| 521 | 
            +
              end # display_value and display_value_w_date
         | 
| 522 | 
            +
              
         | 
| 269 523 | 
             
              context "roles" do
         | 
| 270 524 | 
             
                before(:all) do
         | 
| 271 525 | 
             
                  @xml_w_code = "<mods #{@ns_decl}><name><namePart>Alfred Hitchock</namePart>
         | 
    
        data/spec/record_spec.rb
    CHANGED
    
    | @@ -158,7 +158,7 @@ describe "Mods::Record" do | |
| 158 158 | 
             
                  end
         | 
| 159 159 | 
             
                  it "should include a comma when there is both a family and a given name" do
         | 
| 160 160 | 
             
                    @mods_rec.from_str(@all_name_parts)
         | 
| 161 | 
            -
                    @mods_rec.personal_names.should include("Family, Given")
         | 
| 161 | 
            +
                    @mods_rec.personal_names.should include("Family, Given Mr.")
         | 
| 162 162 | 
             
                  end
         | 
| 163 163 | 
             
                  it "should include multiple words in a namePart" do
         | 
| 164 164 | 
             
                    @mods_rec.from_str(@given_family)
         | 
| @@ -170,11 +170,39 @@ describe "Mods::Record" do | |
| 170 170 | 
             
                      @mods_rec.personal_names.first.should_not match(/,/)
         | 
| 171 171 | 
             
                    }
         | 
| 172 172 | 
             
                  end
         | 
| 173 | 
            -
                  it "should  | 
| 173 | 
            +
                  it "should include terms of address" do
         | 
| 174 174 | 
             
                    @mods_rec.from_str(@all_name_parts)
         | 
| 175 | 
            -
                    @mods_rec.personal_names.first. | 
| 175 | 
            +
                    @mods_rec.personal_names.first.should match(/Mr./)
         | 
| 176 176 | 
             
                  end      
         | 
| 177 177 | 
             
                end # personal_names 
         | 
| 178 | 
            +
                
         | 
| 179 | 
            +
                context "personal_names_w_dates" do
         | 
| 180 | 
            +
                  before(:all) do
         | 
| 181 | 
            +
                    @given_family = '<mods xmlns="http://www.loc.gov/mods/v3"><name type="personal"><namePart type="given">Jorge Luis</namePart>
         | 
| 182 | 
            +
                                            <namePart type="family">Borges</namePart></name></mods>'        
         | 
| 183 | 
            +
                    @given_family_date = '<mods xmlns="http://www.loc.gov/mods/v3"><name type="personal"><namePart type="given">Zaphod</namePart>
         | 
| 184 | 
            +
                                            <namePart type="family">Beeblebrox</namePart>
         | 
| 185 | 
            +
                                            <namePart type="date">1912-2362</namePart></name></mods>'
         | 
| 186 | 
            +
                    @all_name_parts = '<mods xmlns="http://www.loc.gov/mods/v3"><name type="personal"><namePart type="given">Given</namePart>
         | 
| 187 | 
            +
                                            <namePart type="family">Family</namePart>
         | 
| 188 | 
            +
                                            <namePart type="termsOfAddress">Mr.</namePart>
         | 
| 189 | 
            +
                                            <namePart type="date">date</namePart></name></mods>'
         | 
| 190 | 
            +
                  end
         | 
| 191 | 
            +
                  it "should return an Array of Strings" do
         | 
| 192 | 
            +
                    @mods_rec.from_str(@given_family_date)
         | 
| 193 | 
            +
                    @mods_rec.personal_names_w_dates.should be_an_instance_of(Array)
         | 
| 194 | 
            +
                  end
         | 
| 195 | 
            +
                  it "should include the date when it is available" do
         | 
| 196 | 
            +
                    @mods_rec.from_str(@given_family_date)
         | 
| 197 | 
            +
                    @mods_rec.personal_names_w_dates.first.should match(/, 1912-2362$/)
         | 
| 198 | 
            +
                    @mods_rec.from_str(@all_name_parts)
         | 
| 199 | 
            +
                    @mods_rec.personal_names_w_dates.first.should match(/, date$/)
         | 
| 200 | 
            +
                  end      
         | 
| 201 | 
            +
                  it "should be just the personal_name if no date is available" do
         | 
| 202 | 
            +
                    @mods_rec.from_str(@given_family)
         | 
| 203 | 
            +
                    @mods_rec.personal_names_w_dates.first.should == 'Borges, Jorge Luis'
         | 
| 204 | 
            +
                  end
         | 
| 205 | 
            +
                end
         | 
| 178 206 |  | 
| 179 207 | 
             
                context "corporate_names" do
         | 
| 180 208 | 
             
                  before(:all) do
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: mods
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.17
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -10,7 +10,7 @@ authors: | |
| 10 10 | 
             
            autorequire: 
         | 
| 11 11 | 
             
            bindir: bin
         | 
| 12 12 | 
             
            cert_chain: []
         | 
| 13 | 
            -
            date: 2012-12- | 
| 13 | 
            +
            date: 2012-12-20 00:00:00.000000000 Z
         | 
| 14 14 | 
             
            dependencies:
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 16 16 | 
             
              name: nokogiri
         | 
| @@ -230,7 +230,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 230 230 | 
             
                  version: '0'
         | 
| 231 231 | 
             
                  segments:
         | 
| 232 232 | 
             
                  - 0
         | 
| 233 | 
            -
                  hash:  | 
| 233 | 
            +
                  hash: 3977666186634091349
         | 
| 234 234 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 235 235 | 
             
              none: false
         | 
| 236 236 | 
             
              requirements:
         | 
| @@ -239,7 +239,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 239 239 | 
             
                  version: '0'
         | 
| 240 240 | 
             
                  segments:
         | 
| 241 241 | 
             
                  - 0
         | 
| 242 | 
            -
                  hash:  | 
| 242 | 
            +
                  hash: 3977666186634091349
         | 
| 243 243 | 
             
            requirements: []
         | 
| 244 244 | 
             
            rubyforge_project: 
         | 
| 245 245 | 
             
            rubygems_version: 1.8.24
         |