document_mapper 0.1.7 → 0.2.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: d9ab11d53186b4024ab9e6d6dccbe9b87e79ac6bcc5eaca018ad6ac5aba88b06
4
+ data.tar.gz: c0431bd44df0df6e1d98f559155a457cde183332c7dd931ad49d071aa0479611
5
+ SHA512:
6
+ metadata.gz: 6f0d93678a4030ed955b38d7b529821a5c04dc7e13cb4d9f0b948387f01be750e744a9521e5710e326cff5fa7a6a7c23f7bd680fe4ca4e76e5318f8193d0af91
7
+ data.tar.gz: a2801844b698e9510e4734eef79df903e23dcd6449d34477bef0ba4bbd0d0eda22fe88d4952f07d7c4182642f807cf9462929d35e4174587678313580b0c57d5
@@ -1,3 +1,3 @@
1
1
  module DocumentMapper
2
- VERSION = '0.1.7'
2
+ VERSION = '0.2.1'
3
3
  end
@@ -1,4 +1,6 @@
1
1
  module DocumentMapper
2
+ class YamlParsingError < StandardError; end
3
+
2
4
  module YamlParsing
3
5
  def read_yaml
4
6
  file_path = self.attributes[:file_path]
@@ -6,7 +8,7 @@ module DocumentMapper
6
8
 
7
9
  if @content =~ /^(---\s*\n.*?\n?)^(---\s*$\n?)/m
8
10
  @content = @content[($1.size + $2.size)..-1]
9
- self.attributes.update(YAML.load($1).symbolize_keys)
11
+ self.attributes.update(yaml_load($1, file_path).transform_keys(&:to_sym))
10
12
  end
11
13
 
12
14
  file_name = File.basename(file_path)
@@ -35,5 +37,11 @@ module DocumentMapper
35
37
  self.class.define_attribute_methods self.attributes.keys
36
38
  self.attributes.keys.each { |attr| self.class.define_read_method attr }
37
39
  end
40
+
41
+ def yaml_load(yaml, file)
42
+ YAML.load(yaml)
43
+ rescue ArgumentError, Psych::SyntaxError
44
+ raise YamlParsingError, "Unable to parse YAML of #{file}"
45
+ end
38
46
  end
39
47
  end
@@ -336,6 +336,26 @@ EOS
336
336
  end
337
337
  end
338
338
 
339
+ describe 'loading a document with invalid yaml' do
340
+ it 'should raise with a decent error message' do
341
+ @file_path = File.expand_path('test/documents/invalid_yaml.textile')
342
+ File.open(@file_path, 'w') do |f|
343
+ f.write <<-EOS
344
+ ---
345
+ title: Look: Invalid YAML!
346
+ ---
347
+
348
+ This is definitely gonna blow up.
349
+ EOS
350
+ end
351
+ proc { MyDocument.reload }.must_raise(DocumentMapper::YamlParsingError, "Unable to parse YAML of #{@file_path}")
352
+ end
353
+
354
+ def teardown
355
+ File.delete @file_path
356
+ end
357
+ end
358
+
339
359
  describe 'multiple document classes' do
340
360
  it 'can serve multiple document directories' do
341
361
  MyDocument.directory = 'test/documents'
metadata CHANGED
@@ -1,90 +1,104 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: document_mapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
5
- prerelease:
4
+ version: 0.2.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ralph von der Heyden
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-01-29 00:00:00.000000000 Z
11
+ date: 2022-07-27 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activesupport
16
- requirement: &70120929299440 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ~>
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
- version: 3.1.0
19
+ version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *70120929299440
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: activemodel
27
- requirement: &70120929298880 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - ~>
31
+ - - ">="
31
32
  - !ruby/object:Gem::Version
32
- version: 3.1.0
33
+ version: '0'
33
34
  type: :runtime
34
35
  prerelease: false
35
- version_requirements: *70120929298880
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
36
41
  - !ruby/object:Gem::Dependency
37
42
  name: rake
38
- requirement: &70120929298380 !ruby/object:Gem::Requirement
39
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
- - - ~>
45
+ - - ">="
42
46
  - !ruby/object:Gem::Version
43
- version: 0.9.0
47
+ version: '0'
44
48
  type: :runtime
45
49
  prerelease: false
46
- version_requirements: *70120929298380
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
47
55
  - !ruby/object:Gem::Dependency
48
56
  name: tilt
49
- requirement: &70120929297840 !ruby/object:Gem::Requirement
50
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
51
58
  requirements:
52
- - - ~>
59
+ - - ">="
53
60
  - !ruby/object:Gem::Version
54
- version: 1.3.0
61
+ version: '0'
55
62
  type: :runtime
56
63
  prerelease: false
57
- version_requirements: *70120929297840
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: RedCloth
60
- requirement: &70120929297320 !ruby/object:Gem::Requirement
61
- none: false
71
+ requirement: !ruby/object:Gem::Requirement
62
72
  requirements:
63
- - - ~>
73
+ - - ">="
64
74
  - !ruby/object:Gem::Version
65
- version: 4.2.0
75
+ version: '0'
66
76
  type: :development
67
77
  prerelease: false
68
- version_requirements: *70120929297320
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: minitest
71
- requirement: &70120929296820 !ruby/object:Gem::Requirement
72
- none: false
85
+ requirement: !ruby/object:Gem::Requirement
73
86
  requirements:
74
- - - ~>
87
+ - - ">="
75
88
  - !ruby/object:Gem::Version
76
- version: 2.6.0
89
+ version: '0'
77
90
  type: :development
78
91
  prerelease: false
79
- version_requirements: *70120929296820
80
- description: ! ' DocumentMapper is an object mapper for plain text documents. The
81
- documents look like the ones used in jekyll (http://github.com/mojombo/jekyll).
82
- They consist of a preambel written in YAML (also called YAML front matter), and
83
- some content in the format you prefer, e.g. Textile. This enables you to write documents
84
- in your favorite editor and access the content and metadata of these in your Ruby
85
- scripts.
86
-
87
- '
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: " DocumentMapper is an object mapper for plain text documents. The documents
98
+ look like the ones used in jekyll (http://github.com/mojombo/jekyll). They consist
99
+ of a preambel written in YAML (also called YAML front matter), and some content
100
+ in the format you prefer, e.g. Textile. This enables you to write documents in your
101
+ favorite editor and access the content and metadata of these in your Ruby scripts.\n"
88
102
  email: ralph@rvdh.de
89
103
  executables: []
90
104
  extensions: []
@@ -92,6 +106,7 @@ extra_rdoc_files: []
92
106
  files:
93
107
  - LICENSE
94
108
  - README.md
109
+ - lib/document_mapper.rb
95
110
  - lib/document_mapper/attribute_methods.rb
96
111
  - lib/document_mapper/constants.rb
97
112
  - lib/document_mapper/core_ext/object.rb
@@ -103,7 +118,6 @@ files:
103
118
  - lib/document_mapper/to_html.rb
104
119
  - lib/document_mapper/version.rb
105
120
  - lib/document_mapper/yaml_parsing.rb
106
- - lib/document_mapper.rb
107
121
  - test/document_mapper/core_ext/symbol_test.rb
108
122
  - test/document_mapper/document_mapper_test.rb
109
123
  - test/document_mapper/selector_test.rb
@@ -115,31 +129,23 @@ files:
115
129
  - test/test_base.rb
116
130
  homepage: http://github.com/ralph/document_mapper
117
131
  licenses: []
132
+ metadata: {}
118
133
  post_install_message:
119
134
  rdoc_options: []
120
135
  require_paths:
121
136
  - lib
122
137
  required_ruby_version: !ruby/object:Gem::Requirement
123
- none: false
124
138
  requirements:
125
- - - ! '>='
139
+ - - ">="
126
140
  - !ruby/object:Gem::Version
127
141
  version: '0'
128
- segments:
129
- - 0
130
- hash: 2393159709703028438
131
142
  required_rubygems_version: !ruby/object:Gem::Requirement
132
- none: false
133
143
  requirements:
134
- - - ! '>='
144
+ - - ">="
135
145
  - !ruby/object:Gem::Version
136
146
  version: '0'
137
- segments:
138
- - 0
139
- hash: 2393159709703028438
140
147
  requirements: []
141
- rubyforge_project:
142
- rubygems_version: 1.8.10
148
+ rubygems_version: 3.1.6
143
149
  signing_key:
144
150
  specification_version: 3
145
151
  summary: DocumentMapper is an object mapper for plain text documents.