citeproc-ruby 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -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