ruby-nuggets 0.9.8.1 → 0.9.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. checksums.yaml +4 -4
  2. data/README +1 -1
  3. data/Rakefile +9 -3
  4. data/lib/nuggets/all.rb +1 -1
  5. data/lib/nuggets/array/combination.rb +2 -25
  6. data/lib/nuggets/array/flatten_once.rb +1 -12
  7. data/lib/nuggets/array/format.rb +2 -60
  8. data/lib/nuggets/array/in_order.rb +1 -12
  9. data/lib/nuggets/array/monotone.rb +10 -27
  10. data/lib/nuggets/array/only.rb +1 -16
  11. data/lib/nuggets/array/shuffle.rb +1 -1
  12. data/lib/nuggets/array/to_hash.rb +1 -22
  13. data/lib/nuggets/cli.rb +2 -2
  14. data/lib/nuggets/content_type.rb +3 -8
  15. data/lib/nuggets/dotted_decimal.rb +0 -18
  16. data/lib/nuggets/enumerable/all_any_extended.rb +0 -27
  17. data/lib/nuggets/enumerable/minmax.rb +4 -25
  18. data/lib/nuggets/hash/at.rb +2 -20
  19. data/lib/nuggets/hash/deep_fetch.rb +5 -0
  20. data/lib/nuggets/hash/deep_fetch_mixin.rb +75 -0
  21. data/lib/nuggets/hash/in_order.rb +0 -8
  22. data/lib/nuggets/hash/insert.rb +2 -13
  23. data/lib/nuggets/hash/only.rb +2 -18
  24. data/lib/nuggets/i18n.rb +1 -10
  25. data/lib/nuggets/integer/factorial.rb +0 -17
  26. data/lib/nuggets/integer/to_binary_s.rb +0 -8
  27. data/lib/nuggets/lsi.rb +2 -2
  28. data/lib/nuggets/midos.rb +2 -2
  29. data/lib/nuggets/mysql.rb +6 -207
  30. data/lib/nuggets/numeric/duration.rb +0 -8
  31. data/lib/nuggets/numeric/limit.rb +1 -8
  32. data/lib/nuggets/numeric/signum.rb +0 -7
  33. data/lib/nuggets/numeric/to_multiple.rb +0 -6
  34. data/lib/nuggets/rdf/compression.rb +3 -89
  35. data/lib/nuggets/rdf/prefix.rb +6 -32
  36. data/lib/nuggets/rdf/turtle/reader.rb +5 -70
  37. data/lib/nuggets/rdf/turtle.rb +6 -122
  38. data/lib/nuggets/rdf/uri.rb +5 -37
  39. data/lib/nuggets/ruby.rb +39 -147
  40. data/lib/nuggets/string/capitalize_first.rb +2 -18
  41. data/lib/nuggets/string/case.rb +0 -22
  42. data/lib/nuggets/string/msub.rb +0 -18
  43. data/lib/nuggets/string/nsub.rb +2 -16
  44. data/lib/nuggets/string/sub_with_md.rb +6 -25
  45. data/lib/nuggets/string/word_wrap.rb +1 -35
  46. data/lib/nuggets/util/ansicolor2css.rb +1 -1
  47. data/lib/nuggets/util/cli.rb +1 -1
  48. data/lib/nuggets/util/content_type.rb +1 -1
  49. data/lib/nuggets/util/dotted_decimal.rb +1 -2
  50. data/lib/nuggets/util/i18n.rb +1 -1
  51. data/lib/nuggets/util/lazy_attr.rb +1 -1
  52. data/lib/nuggets/util/log_parser/apache.rb +1 -1
  53. data/lib/nuggets/util/log_parser/rails.rb +1 -1
  54. data/lib/nuggets/util/log_parser.rb +1 -1
  55. data/lib/nuggets/util/midos.rb +1 -1
  56. data/lib/nuggets/util/mysql.rb +1 -1
  57. data/lib/nuggets/util/pluggable.rb +1 -1
  58. data/lib/nuggets/util/ruby.rb +1 -1
  59. data/lib/nuggets/version.rb +2 -2
  60. data/spec/nuggets/array/boost_spec.rb +1 -3
  61. data/spec/nuggets/array/combination_spec.rb +25 -0
  62. data/spec/nuggets/array/correlation_spec.rb +1 -3
  63. data/spec/nuggets/array/flatten_once_spec.rb +16 -0
  64. data/spec/nuggets/array/flush_spec.rb +1 -3
  65. data/spec/nuggets/array/format_spec.rb +52 -0
  66. data/spec/nuggets/array/hashify_spec.rb +1 -3
  67. data/spec/nuggets/array/histogram_spec.rb +1 -3
  68. data/spec/nuggets/array/in_order_spec.rb +13 -0
  69. data/spec/nuggets/array/limit_spec.rb +1 -3
  70. data/spec/nuggets/array/mean_spec.rb +3 -5
  71. data/spec/nuggets/array/median_spec.rb +3 -5
  72. data/spec/nuggets/array/mode_spec.rb +1 -3
  73. data/spec/nuggets/array/monotone_spec.rb +30 -0
  74. data/spec/nuggets/array/only_spec.rb +26 -0
  75. data/spec/nuggets/array/regression_spec.rb +1 -3
  76. data/spec/nuggets/array/runiq_spec.rb +1 -3
  77. data/spec/nuggets/array/standard_deviation_spec.rb +1 -3
  78. data/spec/nuggets/array/to_hash_spec.rb +28 -0
  79. data/spec/nuggets/array/variance_spec.rb +3 -5
  80. data/spec/nuggets/dotted_decimal_spec.rb +27 -0
  81. data/spec/nuggets/enumerable/all_any_extended_spec.rb +31 -0
  82. data/spec/nuggets/enumerable/minmax_spec.rb +21 -0
  83. data/spec/nuggets/env/set_spec.rb +1 -3
  84. data/spec/nuggets/env/user_encoding_spec.rb +1 -3
  85. data/spec/nuggets/env/user_home_spec.rb +12 -10
  86. data/spec/nuggets/file/ext_spec.rb +1 -3
  87. data/spec/nuggets/file/replace_spec.rb +1 -3
  88. data/spec/nuggets/file/sub_spec.rb +1 -3
  89. data/spec/nuggets/file/which_spec.rb +1 -3
  90. data/spec/nuggets/hash/at_spec.rb +19 -0
  91. data/spec/nuggets/hash/deep_fetch_spec.rb +159 -0
  92. data/spec/nuggets/hash/deep_merge_spec.rb +1 -3
  93. data/spec/nuggets/hash/in_order_spec.rb +12 -0
  94. data/spec/nuggets/hash/insert_spec.rb +13 -0
  95. data/spec/nuggets/hash/nest_spec.rb +1 -3
  96. data/spec/nuggets/hash/only_spec.rb +29 -0
  97. data/spec/nuggets/hash/seen_spec.rb +4 -6
  98. data/spec/nuggets/hash/unroll_spec.rb +2 -4
  99. data/spec/nuggets/i18n_spec.rb +13 -0
  100. data/spec/nuggets/integer/factorial_spec.rb +10 -0
  101. data/spec/nuggets/integer/length_spec.rb +1 -3
  102. data/spec/nuggets/integer/map_spec.rb +1 -3
  103. data/spec/nuggets/integer/to_binary_s_spec.rb +19 -0
  104. data/spec/nuggets/numeric/duration_spec.rb +25 -0
  105. data/spec/nuggets/numeric/limit_spec.rb +16 -0
  106. data/spec/nuggets/numeric/signum_spec.rb +16 -0
  107. data/spec/nuggets/numeric/to_multiple_spec.rb +16 -0
  108. data/spec/nuggets/object/blank_spec.rb +1 -2
  109. data/spec/nuggets/object/boolean_spec.rb +1 -3
  110. data/spec/nuggets/object/msend_spec.rb +1 -3
  111. data/spec/nuggets/object/silence_spec.rb +7 -4
  112. data/spec/nuggets/object/singleton_class_spec.rb +11 -4
  113. data/spec/nuggets/proc/bind_spec.rb +1 -3
  114. data/spec/nuggets/range/quantile_spec.rb +1 -3
  115. data/spec/nuggets/string/camelscore_spec.rb +11 -13
  116. data/spec/nuggets/string/capitalize_first_spec.rb +13 -0
  117. data/spec/nuggets/string/case_spec.rb +31 -0
  118. data/spec/nuggets/string/evaluate_spec.rb +1 -3
  119. data/spec/nuggets/string/msub_spec.rb +20 -0
  120. data/spec/nuggets/string/nsub_spec.rb +13 -0
  121. data/spec/nuggets/string/sub_with_md_spec.rb +25 -0
  122. data/spec/nuggets/string/wc_spec.rb +1 -3
  123. data/spec/nuggets/string/word_wrap_spec.rb +81 -0
  124. data/spec/nuggets/string/xor_spec.rb +1 -3
  125. data/spec/nuggets/uri/content_type_spec.rb +32 -27
  126. data/spec/nuggets/uri/exist_spec.rb +33 -9
  127. data/spec/spec_helper.rb +17 -0
  128. metadata +34 -5
  129. data/.rspec +0 -1
@@ -55,20 +55,3 @@ class Integer
55
55
  alias_method :f!, :factorial
56
56
 
57
57
  end
58
-
59
- if $0 == __FILE__
60
- 1.upto(8) { |i|
61
- puts "#{i}: #{i.factorial}"
62
- }
63
-
64
- require 'benchmark'
65
-
66
- ::Benchmark.bm(19) { |x|
67
- [20000, 800, 300, 700, 130, 480, 9999, 9999, 25000].each { |i|
68
- puts "#{i}:"
69
-
70
- x.report('factorial') { i.factorial }
71
- x.report('factorial_memoized') { i.factorial_memoized }
72
- }
73
- }
74
- end
@@ -37,11 +37,3 @@ class Integer
37
37
  end
38
38
 
39
39
  end
40
-
41
- if $0 == __FILE__
42
- [20000, 800, 300, 700, 130, 480, 9999, 9999, 25000].each { |i|
43
- p i
44
- p i.to_binary_s
45
- p i.to_binary_s(32)
46
- }
47
- end
data/lib/nuggets/lsi.rb CHANGED
@@ -2,7 +2,7 @@ begin
2
2
  require 'lsi4r'
3
3
  module Nuggets; LSI = ::Lsi4R; end
4
4
 
5
- warn "#{__FILE__}: Nuggets::LSI is deprecated, use Lsi4R instead."
5
+ warn "#{__FILE__}: Nuggets::LSI is deprecated, use Lsi4R instead." unless ENV['NUGGETS_DEPRECATED_LSI']
6
6
  rescue LoadError => err
7
- warn "#{__FILE__}: Nuggets::LSI is no longer available; install `lsi4r' instead. (#{err})"
7
+ warn "#{__FILE__}: Nuggets::LSI is no longer available; install `lsi4r' instead. (#{err})" unless ENV['NUGGETS_DEPRECATED_LSI']
8
8
  end
data/lib/nuggets/midos.rb CHANGED
@@ -2,7 +2,7 @@ begin
2
2
  require 'midos'
3
3
  module Nuggets; Midos = ::Midos; end
4
4
 
5
- warn "#{__FILE__}: Nuggets::Midos is deprecated, use Midos instead."
5
+ warn "#{__FILE__}: Nuggets::Midos is deprecated, use Midos instead." unless ENV['NUGGETS_DEPRECATED_MIDOS']
6
6
  rescue LoadError => err
7
- warn "#{__FILE__}: Nuggets::Midos is no longer available; install `midos' instead. (#{err})"
7
+ warn "#{__FILE__}: Nuggets::Midos is no longer available; install `midos' instead. (#{err})" unless ENV['NUGGETS_DEPRECATED_MIDOS']
8
8
  end
data/lib/nuggets/mysql.rb CHANGED
@@ -1,209 +1,8 @@
1
- #--
2
- ###############################################################################
3
- # #
4
- # A component of ruby-nuggets, some extensions to the Ruby programming #
5
- # language. #
6
- # #
7
- # Copyright (C) 2007-2013 Jens Wille #
8
- # #
9
- # Authors: #
10
- # Jens Wille <jens.wille@gmail.com> #
11
- # #
12
- # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
- # under the terms of the GNU Affero General Public License as published by #
14
- # the Free Software Foundation; either version 3 of the License, or (at your #
15
- # option) any later version. #
16
- # #
17
- # ruby-nuggets is distributed in the hope that it will be useful, but WITHOUT #
18
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
19
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License #
20
- # for more details. #
21
- # #
22
- # You should have received a copy of the GNU Affero General Public License #
23
- # along with ruby-nuggets. If not, see <http://www.gnu.org/licenses/>. #
24
- # #
25
- ###############################################################################
26
- #++
1
+ begin
2
+ require 'mysql_parser'
3
+ module Nuggets; module MySQL; Parser = ::MysqlParser; end; end
27
4
 
28
- require 'strscan'
29
-
30
- module Nuggets
31
- module MySQL
32
-
33
- class Parser
34
-
35
- DEFAULT_NAME = '__DEFAULT__'
36
- DEFAULT_TABLE = '__DEFAULT__'
37
-
38
- USE_RE = /\AUSE\s+`(.+?)`/i
39
- CREATE_TABLE_RE = /\ACREATE\s+TABLE\s+`(.+?)`/i
40
- TABLE_COLUMN_RE = /\A\s+`(.+?)`/
41
- FINISH_TABLE_RE = /\A\).*;\Z/
42
- INSERT_VALUES_RE = /\AINSERT\s+INTO\s+`(.+?)`\s+(?:\((.+?)\)\s+)?VALUES\s*(.*);\Z/i
43
- CLEAN_COLUMNS_RE = /[\s`]+/
44
-
45
- def self.parse(input, &block)
46
- parser = new.parse(input, &block)
47
- block_given? ? parser : parser.tables
48
- end
49
-
50
- def initialize
51
- reset
52
- end
53
-
54
- def reset
55
- @name = DEFAULT_NAME
56
- @table = DEFAULT_TABLE
57
- @tables = {}
58
- @columns = Hash.new { |h, k| h[k] = [] }
59
- @value_parser = ValueParser.new
60
- end
61
-
62
- attr_reader :tables
63
-
64
- def parse(input, &block)
65
- unless block
66
- tables, block = @tables, lambda { |_, name, table, columns, values|
67
- ((tables[name] ||= {})[table] ||= []) << fields = {}
68
-
69
- values.each_with_index { |value, index|
70
- if column = columns[index]
71
- fields[column] = value
72
- end
73
- }
74
- }
75
- end
76
-
77
- name, table, columns, value_parser, block_given =
78
- @name, @table, @columns, @value_parser, block_given?
79
-
80
- input.each { |line|
81
- case line
82
- when USE_RE
83
- name = $1
84
- yield :use, name if block_given
85
- when CREATE_TABLE_RE
86
- table = $1
87
- when TABLE_COLUMN_RE
88
- columns[table] << $1 if table
89
- when FINISH_TABLE_RE
90
- yield :table, name, table, columns[table] if block_given
91
- table = nil
92
- when INSERT_VALUES_RE
93
- _table, _columns, _values = $1, $2, $3
94
-
95
- _columns = _columns.nil? ? columns[_table] :
96
- _columns.gsub(CLEAN_COLUMNS_RE, '').split(',')
97
-
98
- value_parser.parse(_values) { |values|
99
- block[:insert, name, _table, _columns, values]
100
- } unless _columns.empty?
101
- end
102
- }
103
-
104
- @name, @table = name, table
105
-
106
- self
107
- end
108
-
109
- end
110
-
111
- class ValueParser
112
-
113
- AST = Struct.new(:value)
114
-
115
- def self.parse(input)
116
- new.parse(input)
117
- end
118
-
119
- def parse(input)
120
- @input = StringScanner.new(input)
121
-
122
- rows, block_given = [], block_given?
123
-
124
- while result = parse_row
125
- row = result.value
126
- block_given ? yield(row) : rows << row
127
- break unless @input.scan(/,\s*/)
128
- end
129
-
130
- @input.scan(/;/) # optional
131
-
132
- error('Unexpected data') unless @input.eos?
133
-
134
- rows unless block_given
135
- end
136
-
137
- def parse_row
138
- return unless @input.scan(/\(/)
139
-
140
- row = []
141
-
142
- while result = parse_value
143
- row << result.value
144
- break unless @input.scan(/,\s*/)
145
- end
146
-
147
- error('Unclosed row') unless @input.scan(/\)/)
148
-
149
- AST.new(row)
150
- end
151
-
152
- def parse_value
153
- parse_string ||
154
- parse_number ||
155
- parse_keyword
156
- end
157
-
158
- def parse_string
159
- return unless @input.scan(/'/)
160
-
161
- string = ''
162
-
163
- while contents = parse_string_content || parse_string_escape
164
- string << contents.value
165
- end
166
-
167
- error('Unclosed string') unless @input.scan(/'/)
168
-
169
- AST.new(string)
170
- end
171
-
172
- def parse_string_content
173
- if @input.scan(/[^\\']+/)
174
- AST.new(@input.matched)
175
- end
176
- end
177
-
178
- def parse_string_escape
179
- if @input.scan(/\\[abtnvfr]/)
180
- AST.new(eval(%Q{"#{@input.matched}"}))
181
- elsif @input.scan(/\\.|''/)
182
- AST.new(@input.matched[-1, 1])
183
- end
184
- end
185
-
186
- def parse_number
187
- if @input.scan(/-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/)
188
- AST.new(eval(@input.matched))
189
- end
190
- end
191
-
192
- def parse_keyword
193
- if @input.scan(/null/i)
194
- AST.new(nil)
195
- end
196
- end
197
-
198
- def error(message)
199
- if @input.eos?
200
- raise "Unexpected end of input (#{message})."
201
- else
202
- raise "#{message} at #{$.}:#{@input.pos}: #{@input.peek(16).inspect}"
203
- end
204
- end
205
-
206
- end
207
-
208
- end
5
+ warn "#{__FILE__}: Nuggets::MySQL::Parser is deprecated, use MysqlParser instead." unless ENV['NUGGETS_DEPRECATED_MYSQL']
6
+ rescue LoadError => err
7
+ warn "#{__FILE__}: Nuggets::MySQL::Parser is no longer available; install `mysql_parser' instead. (#{err})" unless ENV['NUGGETS_DEPRECATED_MYSQL']
209
8
  end
@@ -99,11 +99,3 @@ class Numeric
99
99
  end
100
100
 
101
101
  end
102
-
103
- if $0 == __FILE__
104
- [123, 123456789, 0, 0.001, 1.23, 1234.56789].each { |n|
105
- p n
106
- p [n.hms, n.to_hms, n.to_hms(2)]
107
- p [n.ymd, n.to_ymd, n.to_ymd(true)]
108
- }
109
- end
@@ -35,7 +35,7 @@ class Numeric
35
35
  def limit(min, max)
36
36
  min, max = max, min if max < min
37
37
 
38
- self.min(min).max(max)
38
+ min(min).max(max)
39
39
  end
40
40
 
41
41
  alias_method :between, :limit
@@ -61,10 +61,3 @@ class Numeric
61
61
  alias_method :at_most, :max
62
62
 
63
63
  end
64
-
65
- if $0 == __FILE__
66
- [123, -123, 0, 0.001, 1.23, -12.3].each { |n|
67
- p n
68
- p n.between(0, 10)
69
- }
70
- end
@@ -51,10 +51,3 @@ class Numeric
51
51
  alias_method :sgn, :signum
52
52
 
53
53
  end
54
-
55
- if $0 == __FILE__
56
- [123, -123, 0, 0.001, 1.23, -12.3].each { |n|
57
- p n
58
- p n.sgn
59
- }
60
- end
@@ -60,9 +60,3 @@ class Numeric
60
60
  end
61
61
 
62
62
  end
63
-
64
- if $0 == __FILE__
65
- [123, -123, 0, 0.001, 5.67, -12.3].each { |n|
66
- p [n, n.round_to(10), n.floor_to(10), n.ceil_to(10)]
67
- }
68
- end
@@ -1,92 +1,6 @@
1
- # encoding: utf-8
2
-
3
- #--
4
- ###############################################################################
5
- # #
6
- # A component of ruby-nuggets, some extensions to the Ruby programming #
7
- # language. #
8
- # #
9
- # Copyright (C) 2007-2014 Jens Wille #
10
- # #
11
- # Authors: #
12
- # Jens Wille <jens.wille@gmail.com> #
13
- # #
14
- # ruby-nuggets is free software; you can redistribute it and/or modify it #
15
- # under the terms of the GNU Affero General Public License as published by #
16
- # the Free Software Foundation; either version 3 of the License, or (at your #
17
- # option) any later version. #
18
- # #
19
- # ruby-nuggets is distributed in the hope that it will be useful, but WITHOUT #
20
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
21
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License #
22
- # for more details. #
23
- # #
24
- # You should have received a copy of the GNU Affero General Public License #
25
- # along with ruby-nuggets. If not, see <http://www.gnu.org/licenses/>. #
26
- # #
27
- ###############################################################################
28
- #++
29
-
30
- require 'rdf/util'
31
-
32
1
  begin
33
- require 'zlib'
2
+ require 'turtle_reader/rdf/compression'
3
+ warn "#{__FILE__}: 'nuggets/rdf/compression' is deprecated, use 'turtle_reader/rdf/compression' instead." unless ENV['NUGGETS_DEPRECATED_RDF_COMPRESSION']
34
4
  rescue LoadError => err
35
- warn err if $VERBOSE
36
- end
37
-
38
- begin
39
- require 'rbzip2'
40
-
41
- class RBzip2::Decompressor
42
-
43
- def eof?
44
- @current_state == EOF
45
- end
46
-
47
- def gets(sep = $/)
48
- r = ''
49
-
50
- loop {
51
- b = read0
52
- break if b < 0
53
-
54
- count(1)
55
- r << b
56
-
57
- break if r.end_with?(sep)
58
- }
59
-
60
- r
61
- end
62
-
63
- end
64
- rescue LoadError => err
65
- warn err if $VERBOSE
66
- end
67
-
68
- class << RDF::Util::File
69
-
70
- alias_method :_nuggets_original_open_file, :open_file
71
-
72
- def open_file(filename_or_url, options = {}, &block)
73
- klass = begin
74
- case File.extname(filename_or_url).downcase.sub(/\A\./, '')
75
- when /\Abz(?:ip)?2?\z/ then RBzip2::Decompressor
76
- when /\Agz(?:ip)?\z/ then Zlib::GzipReader
77
- end
78
- rescue NameError => err
79
- err.message.sub!('Module::', '')
80
- raise
81
- end
82
-
83
- if klass
84
- original_block, block = block, lambda { |file|
85
- original_block[file.is_a?(IO) ? klass.new(file) : file]
86
- }
87
- end
88
-
89
- _nuggets_original_open_file(filename_or_url, options, &block)
90
- end
91
-
5
+ warn "#{__FILE__}: 'nuggets/rdf/compression' is no longer available; install `turtle_reader' instead. (#{err})" unless ENV['NUGGETS_DEPRECATED_RDF_COMPRESSION']
92
6
  end
@@ -1,32 +1,6 @@
1
- # encoding: utf-8
2
-
3
- #--
4
- ###############################################################################
5
- # #
6
- # A component of ruby-nuggets, some extensions to the Ruby programming #
7
- # language. #
8
- # #
9
- # Copyright (C) 2007-2014 Jens Wille #
10
- # #
11
- # Authors: #
12
- # Jens Wille <jens.wille@gmail.com> #
13
- # #
14
- # ruby-nuggets is free software; you can redistribute it and/or modify it #
15
- # under the terms of the GNU Affero General Public License as published by #
16
- # the Free Software Foundation; either version 3 of the License, or (at your #
17
- # option) any later version. #
18
- # #
19
- # ruby-nuggets is distributed in the hope that it will be useful, but WITHOUT #
20
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
21
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License #
22
- # for more details. #
23
- # #
24
- # You should have received a copy of the GNU Affero General Public License #
25
- # along with ruby-nuggets. If not, see <http://www.gnu.org/licenses/>. #
26
- # #
27
- ###############################################################################
28
- #++
29
-
30
- require 'rdf'
31
-
32
- def RDF.__prefix__; :rdf; end
1
+ begin
2
+ require 'turtle_reader/rdf/prefix'
3
+ warn "#{__FILE__}: 'nuggets/rdf/prefix' is deprecated, use 'turtle_reader/rdf/prefix' instead." unless ENV['NUGGETS_DEPRECATED_RDF_PREFIX']
4
+ rescue LoadError => err
5
+ warn "#{__FILE__}: 'nuggets/rdf/prefix' is no longer available; install `turtle_reader' instead. (#{err})" unless ENV['NUGGETS_DEPRECATED_RDF_PREFIX']
6
+ end
@@ -1,71 +1,6 @@
1
- # encoding: utf-8
2
-
3
- #--
4
- ###############################################################################
5
- # #
6
- # A component of ruby-nuggets, some extensions to the Ruby programming #
7
- # language. #
8
- # #
9
- # Copyright (C) 2007-2014 Jens Wille #
10
- # #
11
- # Authors: #
12
- # Jens Wille <jens.wille@gmail.com> #
13
- # #
14
- # ruby-nuggets is free software; you can redistribute it and/or modify it #
15
- # under the terms of the GNU Affero General Public License as published by #
16
- # the Free Software Foundation; either version 3 of the License, or (at your #
17
- # option) any later version. #
18
- # #
19
- # ruby-nuggets is distributed in the hope that it will be useful, but WITHOUT #
20
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
21
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License #
22
- # for more details. #
23
- # #
24
- # You should have received a copy of the GNU Affero General Public License #
25
- # along with ruby-nuggets. If not, see <http://www.gnu.org/licenses/>. #
26
- # #
27
- ###############################################################################
28
- #++
29
-
30
- require 'rdf/turtle'
31
-
32
- module RDF
33
- class Turtle::Reader
34
-
35
- PARSE_OPTIONS = {
36
- :branch => BRANCH,
37
- :first => FIRST,
38
- :follow => FOLLOW,
39
- :reset_on_start => true
40
- }
41
-
42
- def closed?
43
- @input.closed?
44
- end
45
-
46
- def parse_prologue
47
- parse_internal { break }
48
- rewind
49
- [base_uri, prefixes]
50
- end
51
-
52
- def parse_statements
53
- parse_internal { |context, _, *data|
54
- if context == :statement
55
- data[3] = { :context => data[3] }
56
- yield Statement.new(*data)
57
- end
58
- }
59
- end
60
-
61
- private
62
-
63
- def parse_internal(&block)
64
- parse(@input, START, @options.merge(PARSE_OPTIONS), &block)
65
- rescue => err
66
- err.message << " (line #{lineno})"
67
- raise
68
- end
69
-
70
- end
1
+ begin
2
+ require 'turtle_reader/rdf/turtle/reader'
3
+ warn "#{__FILE__}: 'nuggets/rdf/turtle/reader' is deprecated, use 'turtle_reader/rdf/turtle/reader' instead." unless ENV['NUGGETS_DEPRECATED_RDF_TURTLE_READER']
4
+ rescue LoadError => err
5
+ warn "#{__FILE__}: 'nuggets/rdf/turtle/reader' is no longer available; install `turtle_reader' instead. (#{err})" unless ENV['NUGGETS_DEPRECATED_RDF_TURTLE_READER']
71
6
  end
@@ -1,124 +1,8 @@
1
- # encoding: utf-8
1
+ begin
2
+ require 'turtle_reader'
3
+ module Nuggets; module RDF; Turtle = ::TurtleReader; end; end
2
4
 
3
- #--
4
- ###############################################################################
5
- # #
6
- # A component of ruby-nuggets, some extensions to the Ruby programming #
7
- # language. #
8
- # #
9
- # Copyright (C) 2007-2014 Jens Wille #
10
- # #
11
- # Authors: #
12
- # Jens Wille <jens.wille@gmail.com> #
13
- # #
14
- # ruby-nuggets is free software; you can redistribute it and/or modify it #
15
- # under the terms of the GNU Affero General Public License as published by #
16
- # the Free Software Foundation; either version 3 of the License, or (at your #
17
- # option) any later version. #
18
- # #
19
- # ruby-nuggets is distributed in the hope that it will be useful, but WITHOUT #
20
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
21
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License #
22
- # for more details. #
23
- # #
24
- # You should have received a copy of the GNU Affero General Public License #
25
- # along with ruby-nuggets. If not, see <http://www.gnu.org/licenses/>. #
26
- # #
27
- ###############################################################################
28
- #++
29
-
30
- require 'nuggets/rdf/turtle/reader'
31
- require 'nuggets/rdf/compression'
32
- require 'nuggets/rdf/prefix'
33
- require 'nuggets/rdf/uri'
34
-
35
- module Nuggets
36
- module RDF
37
- class Turtle
38
-
39
- include ::Enumerable
40
-
41
- NS_SEPARATOR = ':'.freeze
42
-
43
- NS = ::RDF::Vocabulary.inject({}) { |h, v| h[v.__prefix__] = v; h }
44
-
45
- class << self
46
-
47
- def open(file, *args)
48
- ::RDF::Reader.open(file, :format => :ttl) { |reader|
49
- turtle = new(reader, *args)
50
- turtle.file = ::File.expand_path(file)
51
-
52
- return block_given? ? yield(turtle) : turtle
53
- }
54
- end
55
-
56
- def foreach(file, *args, &block)
57
- open(file, *args) { |turtle| turtle.each(&block) }
58
- end
59
-
60
- end
61
-
62
- def initialize(reader, map = true)
63
- @reader, @base, @prefixes = reader, *reader.parse_prologue
64
- self.map = map
65
- end
66
-
67
- attr_reader :reader, :map, :base, :prefixes
68
-
69
- attr_accessor :file
70
-
71
- def map=(map)
72
- unless map.is_a?(::Hash)
73
- @map = ::Hash.new(map)
74
- else
75
- @map = {}
76
-
77
- map.each { |k, v|
78
- if k.is_a?(::String)
79
- n, s = k.split(NS_SEPARATOR, 2)
80
- k = NS.key?(n = n.to_sym) ? NS[n][s] : prefixes[n] / s
81
- end
82
-
83
- @map[k] = v
84
- }
85
- end
86
- end
87
-
88
- def statements
89
- each_statement.to_a
90
- end
91
-
92
- def each_statement(&block)
93
- return enum_for(:each_statement) unless block_given?
94
- reader.parse_statements(&block)
95
- self
96
- end
97
-
98
- def each
99
- return enum_for(:each) unless block_given?
100
-
101
- uri, map, base = ::RDF::URI, self.map, self.base
102
-
103
- each_statement { |t|
104
- s, p, o = *t
105
-
106
- if s.is_a?(uri) and k = map[p] and s.start_with?(base)
107
- yield s, o, k
108
- end
109
- }
110
- end
111
-
112
- def closed?
113
- reader.closed?
114
- end
115
-
116
- def inspect
117
- '#<%s:0x%x @file=%p, @base=%p%s>' % [
118
- self.class, object_id, file, base, closed? ? ' (closed)' : ''
119
- ]
120
- end
121
-
122
- end
123
- end
5
+ warn "#{__FILE__}: Nuggets::RDF::Turtle is deprecated, use TurtleReader instead." unless ENV['NUGGETS_DEPRECATED_RDF_TURTLE']
6
+ rescue LoadError => err
7
+ warn "#{__FILE__}: Nuggets::RDF::Turtle is no longer available; install `turtle_reader' instead. (#{err})" unless ENV['NUGGETS_DEPRECATED_RDF_TURTLE']
124
8
  end