citeproc-ruby 0.0.5 → 0.0.6

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.
@@ -159,7 +159,7 @@ module CiteProc
159
159
  end
160
160
 
161
161
  def new_self_recording_hash
162
- Hash.new { |h,k| h[k] = Hash.new { |h,k| h[k] = k } }
162
+ Hash.new { |hash, key| hash[key] = Hash.new { |h,k| h[k] = k } }
163
163
  end
164
164
  end
165
165
 
@@ -1,3 +1,3 @@
1
1
  module CiteProc
2
- VERSION = '0.0.5'.freeze
2
+ VERSION = '0.0.6'.freeze
3
3
  end
data/lib/csl/nodes.rb CHANGED
@@ -178,7 +178,7 @@ module CSL
178
178
 
179
179
  unless processor.nil?
180
180
  yield processor.locale.send(type)
181
- yield CSL::Locale.new(processor.language)
181
+ yield CSL::Locale.new(processor.language).send(type)
182
182
  end
183
183
 
184
184
  CSL.default_locale.send(type)[key]
@@ -575,8 +575,8 @@ module CSL
575
575
 
576
576
  year = date.year.abs.to_s
577
577
  year = year[-2..-1] if form == 'short'
578
- year = [year, localized_terms('ad')].join if date.ad?
579
- year = [year, localized_terms('bc')].join if date.bc?
578
+ year = [year, localized_terms('ad', processor)].join if date.ad?
579
+ year = [year, localized_terms('bc', processor)].join if date.bc?
580
580
  year
581
581
  end
582
582
 
@@ -666,7 +666,7 @@ module CSL
666
666
  def process(data, processor)
667
667
  number = data[variable]
668
668
 
669
- term = localized_terms(variable)
669
+ term = localized_terms(variable, processor)
670
670
  attributes['gender-form'] = term.gender if term.has_gender?
671
671
 
672
672
  case
@@ -843,7 +843,7 @@ module CSL
843
843
  # name in the list.
844
844
  def ampersand(processor)
845
845
  if self.and?
846
- ampersand = self.and == 'symbol' ? '&' : localized_terms(self.and == 'text' ? 'and' : self.and).to_s(attributes)
846
+ ampersand = self.and == 'symbol' ? '&' : localized_terms(self.and == 'text' ? 'and' : self.and, processor).to_s(attributes)
847
847
  delimiter_precedes_last? ? [delimiter, ampersand, ' '].join : ampersand.center(ampersand.length + 2)
848
848
  else
849
849
  delimiter
@@ -902,8 +902,7 @@ module CSL
902
902
  attr_accessor :parent
903
903
 
904
904
  def process(data, processor)
905
- super
906
- localized_terms(term || 'et-al').to_s(attributes)
905
+ localized_terms(term || 'et-al', processor).to_s(attributes)
907
906
  rescue Exception => e
908
907
  handle_processing_error(e, data, processor)
909
908
  end
@@ -937,13 +936,13 @@ module CSL
937
936
  attr_fields %w{ variable plural form }
938
937
 
939
938
  def process(data, processor)
940
- localized_terms(data['label'].to_s).to_s(attributes.merge({ 'plural' => plural?(data, 0).to_s }))
939
+ localized_terms(data['label'].to_s, processor).to_s(attributes.merge({ 'plural' => plural?(data, 0).to_s }))
941
940
  rescue Exception => e
942
941
  handle_processing_error(e, data, processor)
943
942
  end
944
943
 
945
944
  def process_names(role, number, processor)
946
- localized_terms(role).to_s(attributes.merge({ 'plural' => plural?(nil, number).to_s }))
945
+ localized_terms(role, processor).to_s(attributes.merge({ 'plural' => plural?(nil, number).to_s }))
947
946
  rescue Exception => e
948
947
  handle_processing_error(e, data, processor)
949
948
  end
@@ -996,6 +995,8 @@ module CSL
996
995
 
997
996
  def process(data, processor)
998
997
  super
998
+ start_observing(data)
999
+
999
1000
  children.each do |child|
1000
1001
  processed = child.process(data, processor)
1001
1002
  return processed unless processed.empty?
@@ -1003,8 +1004,26 @@ module CSL
1003
1004
  ''
1004
1005
  rescue Exception => e
1005
1006
  handle_processing_error(e, data, processor)
1007
+ ensure
1008
+ stop_observing(data)
1006
1009
  end
1007
1010
 
1011
+ def start_observing(item)
1012
+ @item = item
1013
+ item.add_observer(self)
1014
+ end
1015
+
1016
+ def stop_observing(item)
1017
+ item.delete_observer(self)
1018
+ ensure
1019
+ @item = nil
1020
+ end
1021
+
1022
+ def update(key, value)
1023
+ if key.to_s =~ /author|editor|translator/ && !value.nil?
1024
+ @item[key] = nil
1025
+ end
1026
+ end
1008
1027
  end
1009
1028
 
1010
1029
  # The cs:names element can be used to display the contents of one or more
@@ -1077,7 +1096,7 @@ module CSL
1077
1096
 
1078
1097
  if names.length > truncated.length
1079
1098
  # use delimiter before et al. if there is more than a single name; squeeze whitespace
1080
- others = (et_al.nil? ? localized_terms('et-al').to_s : et_al.process(data, processor))
1099
+ others = (et_al.nil? ? localized_terms('et-al', processor).to_s : et_al.process(data, processor))
1081
1100
  link = (name.et_al_use_first.to_i > 1 || name.delimiter_precedes_et_al? ? name.delimiter : ' ')
1082
1101
 
1083
1102
  processed << [link, others].join.squeeze(' ')
@@ -1108,7 +1127,7 @@ module CSL
1108
1127
  # followed by the list proper.
1109
1128
  def collect_names(item)
1110
1129
  return [] unless self.variable?
1111
- self.variable.split(/\s+/).map { |variable| [variable, (item[variable] || []).map(&:clone)] }
1130
+ self.variable.split(/\s+/).map { |variable| [variable, (item[variable] || []).map(&:clone)] }.reject { |(_, n)| n.empty? }
1112
1131
  end
1113
1132
 
1114
1133
  def inherit_attributes(node)
@@ -37,6 +37,10 @@ module CiteProc
37
37
  proc.import(fixture['input'])
38
38
  proc.format = :html
39
39
 
40
+ if tokens[1] =~ /LocalizedDateFormats-([\w-]+)/
41
+ proc.locale = $1
42
+ end
43
+
40
44
  proc.add_abbreviations(fixture['abbreviations']) if fixture['abbreviations']
41
45
 
42
46
  case fixture['mode']
@@ -13,8 +13,8 @@ module CiteProc
13
13
  end
14
14
 
15
15
  it 'returns a formatted citation' do
16
- Processor.process(item, :mode => :citation, :style => :apa).should == '(Poe, 1996)'
17
- Processor.process(item, :mode => :citation, :style => :mla).should == '(Poe)'
16
+ Processor.process(item, :mode => :citation, :style => :apa)[0].should == '(Poe, 1996)'
17
+ Processor.process(item, :mode => :citation, :style => :mla)[0].should == '(Poe)'
18
18
  end
19
19
 
20
20
  it 'returns a formatted bibliographic entry' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: citeproc-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-04-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: logging
16
- requirement: &70124942643240 !ruby/object:Gem::Requirement
16
+ requirement: &70271244355620 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '1.5'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70124942643240
24
+ version_requirements: *70271244355620
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: nokogiri
27
- requirement: &70124942640860 !ruby/object:Gem::Requirement
27
+ requirement: &70271244354860 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '1.5'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70124942640860
35
+ version_requirements: *70271244354860
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bundler
38
- requirement: &70124942654240 !ruby/object:Gem::Requirement
38
+ requirement: &70271244353520 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '1.1'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70124942654240
46
+ version_requirements: *70271244353520
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rdoc
49
- requirement: &70124942651940 !ruby/object:Gem::Requirement
49
+ requirement: &70271244370300 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70124942651940
57
+ version_requirements: *70271244370300
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rake
60
- requirement: &70124942650180 !ruby/object:Gem::Requirement
60
+ requirement: &70271244368520 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0.9'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70124942650180
68
+ version_requirements: *70271244368520
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
- requirement: &70124942648420 !ruby/object:Gem::Requirement
71
+ requirement: &70271244366160 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '2.9'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70124942648420
79
+ version_requirements: *70271244366160
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: cucumber
82
- requirement: &70124942672100 !ruby/object:Gem::Requirement
82
+ requirement: &70271244364740 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '1.1'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70124942672100
90
+ version_requirements: *70271244364740
91
91
  description: A CSL (Citation Style Language) Processor
92
92
  email:
93
93
  - http://sylvester.keil.or.at