mtif 0.0.1 → 0.0.2
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 +5 -5
- data/.gitignore +1 -0
- data/README.md +13 -2
- data/Rakefile +9 -0
- data/lib/mtif.rb +2 -2
- data/lib/mtif/posts.rb +36 -20
- data/lib/mtif/version.rb +1 -1
- data/mtif.gemspec +2 -2
- data/spec/mtif/post_spec.rb +118 -76
- data/spec/mtif_spec.rb +1 -1
- metadata +15 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ecef4cc75fdd2298659ea13b4b95bd4bffe17ac255dc48d95c7285fce1b09d3e
|
4
|
+
data.tar.gz: 3aca00918efdea29df349cf13e4391d260f8c4c4d6821f8d880b18d17bfc7b12
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61a8b2704956521264d34c0668654ff4d38dc697e135bfce165f535553b6d4b6e67fd1d95dff1f4848d0085013312b04e3b6ba8a8475e2717035834644e7548d
|
7
|
+
data.tar.gz: 9becf310f2aa4bed72aa9bfeff3d519e5c49356d21976e57dea3f17e859899f51ae69f19a3340b3d98fa65c6e7c9871a2f35199fabe571f8d0da888bf3ff10ba
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# MTIF
|
2
2
|
|
3
|
-
A gem to read Movable Type Import Format
|
3
|
+
A gem to read Movable Type Import Format, as documented at [TypePad.org](https://movabletype.org/documentation/appendices/import-export-format.html) and also in the [Wayback Machine](https://web.archive.org/web/20210105063407/https://movabletype.org/documentation/appendices/import-export-format.html)
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -20,10 +20,21 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
-
|
23
|
+
Boy, it'd be smart to put something here. One day I will. Or maybe you will? See "Contributing" below.
|
24
24
|
|
25
25
|
## Contributing
|
26
26
|
|
27
|
+
[](https://travis-ci.org/purp/mtif) [](https://codeclimate.com/github/purp/mtif/maintainability) [](https://codeclimate.com/github/purp/mtif/test_coverage)
|
28
|
+
|
29
|
+
Looking to get involved but don't have a particular itch to scratch? There are plenty of other ways to help!
|
30
|
+
|
31
|
+
* A bit of documentation
|
32
|
+
* A tutorial to help someone else along
|
33
|
+
* More test coverage
|
34
|
+
* Improving the overall code health by addressing Code Climate issues
|
35
|
+
|
36
|
+
Meanwhile, you can get started the usual way:
|
37
|
+
|
27
38
|
1. Fork it ( https://github.com/[my-github-username]/mtif/fork )
|
28
39
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
29
40
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
data/Rakefile
CHANGED
data/lib/mtif.rb
CHANGED
@@ -9,12 +9,12 @@ class MTIF
|
|
9
9
|
def initialize(content)
|
10
10
|
@posts = content.slice_after(/^--------$/).map {|raw_post| MTIF::Post.new(raw_post)}
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
def self.load_file(filename)
|
14
14
|
mtif_file = File.open(filename)
|
15
15
|
mtif = MTIF.new(mtif_file.readlines)
|
16
16
|
mtif_file.close
|
17
|
-
|
17
|
+
|
18
18
|
mtif
|
19
19
|
end
|
20
20
|
|
data/lib/mtif/posts.rb
CHANGED
@@ -3,17 +3,19 @@ require "time"
|
|
3
3
|
class MTIF
|
4
4
|
class Post
|
5
5
|
attr_accessor :source, :data
|
6
|
-
|
6
|
+
|
7
7
|
SINGLE_VALUE_KEYS = %w(author title status basename date unique_url body extended_body excerpt
|
8
|
-
keywords allow_comments allow_pings convert_breaks no_entry).map(&:to_sym)
|
9
|
-
|
8
|
+
keywords allow_comments allow_pings convert_breaks no_entry primary_category).map(&:to_sym)
|
10
9
|
MULTILINE_KEYS = %w(body extended_body excerpt keywords comment ping).map(&:to_sym)
|
11
|
-
|
12
|
-
|
13
|
-
|
10
|
+
MULTIVALUE_KEYS = %w(category tags comment ping).map(&:to_sym)
|
11
|
+
CSV_KEYS = %w(tags).map(&:to_sym)
|
12
|
+
|
14
13
|
VALID_KEYS = (SINGLE_VALUE_KEYS + MULTILINE_KEYS + MULTIVALUE_KEYS).sort.uniq
|
15
14
|
|
16
15
|
DATE_FORMAT = "%m/%d/%Y %I:%M:%S %p"
|
16
|
+
|
17
|
+
FIELD_SEPARATOR = '-----'
|
18
|
+
POST_SEPARATOR = '--------'
|
17
19
|
|
18
20
|
def valid_keys
|
19
21
|
VALID_KEYS
|
@@ -42,14 +44,14 @@ class MTIF
|
|
42
44
|
def initialize(content)
|
43
45
|
@source = content
|
44
46
|
@data = {}
|
45
|
-
|
47
|
+
|
46
48
|
MULTIVALUE_KEYS.each do |key|
|
47
49
|
@data[key] = []
|
48
50
|
end
|
49
|
-
|
51
|
+
|
50
52
|
parse_source
|
51
53
|
end
|
52
|
-
|
54
|
+
|
53
55
|
def to_mtif
|
54
56
|
result = []
|
55
57
|
single_line_single_value_keys.each do |key|
|
@@ -63,6 +65,14 @@ class MTIF
|
|
63
65
|
values = self.send(key)
|
64
66
|
next if values.nil? || (values.respond_to?(:empty) && values.empty?)
|
65
67
|
|
68
|
+
if CSV_KEYS.include?(key)
|
69
|
+
values = [
|
70
|
+
values.map{|v|
|
71
|
+
v.include?("\s") ? "\"#{v}\"" : v
|
72
|
+
}.join(',')
|
73
|
+
]
|
74
|
+
end
|
75
|
+
|
66
76
|
values.each do |value|
|
67
77
|
result << "#{mtif_key(key)}: #{mtif_value(value)}"
|
68
78
|
end
|
@@ -72,23 +82,23 @@ class MTIF
|
|
72
82
|
value = self.send(key)
|
73
83
|
next if value.nil? || (value.respond_to?(:empty) && value.empty?)
|
74
84
|
|
75
|
-
result <<
|
85
|
+
result << FIELD_SEPARATOR
|
76
86
|
result << "#{mtif_key(key)}:\n#{mtif_value(value)}"
|
77
87
|
end
|
78
|
-
|
88
|
+
|
79
89
|
multiline_multivalue_keys.each do |key|
|
80
90
|
values = self.send(key)
|
81
91
|
next if values.nil? || (values.respond_to?(:empty) && values.empty?)
|
82
92
|
|
83
93
|
values.each do |value|
|
84
|
-
result <<
|
94
|
+
result << FIELD_SEPARATOR
|
85
95
|
result << "#{mtif_key(key)}:\n#{mtif_value(value)}"
|
86
96
|
end
|
87
97
|
end
|
88
98
|
|
89
99
|
|
90
|
-
result <<
|
91
|
-
result <<
|
100
|
+
result << FIELD_SEPARATOR unless result.last == FIELD_SEPARATOR #close the final field
|
101
|
+
result << POST_SEPARATOR # close the post
|
92
102
|
result.join("\n") + "\n"
|
93
103
|
end
|
94
104
|
|
@@ -97,7 +107,7 @@ class MTIF
|
|
97
107
|
key = method.to_s.chomp('=').to_sym
|
98
108
|
|
99
109
|
if valid_key?(key)
|
100
|
-
if key
|
110
|
+
if key == method
|
101
111
|
data[key]
|
102
112
|
else
|
103
113
|
data[key] = args.first
|
@@ -116,7 +126,7 @@ class MTIF
|
|
116
126
|
def mtif_key_to_key(raw_key)
|
117
127
|
raw_key.strip.downcase.tr(' ','_').to_sym unless raw_key.nil?
|
118
128
|
end
|
119
|
-
|
129
|
+
|
120
130
|
def mtif_key(key)
|
121
131
|
key.to_s.tr('_', ' ').upcase
|
122
132
|
end
|
@@ -135,21 +145,27 @@ class MTIF
|
|
135
145
|
raw_value
|
136
146
|
end
|
137
147
|
end
|
138
|
-
|
148
|
+
|
139
149
|
def store_data(raw_key, raw_value)
|
140
150
|
key = mtif_key_to_key(raw_key)
|
141
151
|
value = convert_to_native_type(raw_value)
|
142
152
|
|
143
153
|
if MULTIVALUE_KEYS.include?(key)
|
144
|
-
|
154
|
+
if CSV_KEYS.include?(key)
|
155
|
+
value.split(',').each do |v|
|
156
|
+
self.data[key] << v.gsub(/^\"|\"$/, '') unless v.empty?
|
157
|
+
end
|
158
|
+
else
|
159
|
+
self.data[key] << value unless value.empty?
|
160
|
+
end
|
145
161
|
else
|
146
162
|
self.data[key] = value
|
147
163
|
end
|
148
164
|
end
|
149
165
|
|
150
166
|
def parse_source
|
151
|
-
source.slice_before(
|
152
|
-
if lines.first =~
|
167
|
+
source.slice_before(/^#{FIELD_SEPARATOR}/).each do |lines|
|
168
|
+
if lines.first =~ /^#{FIELD_SEPARATOR}/ && lines.size > 1
|
153
169
|
# Multiline data
|
154
170
|
store_data(lines.shift(2).last.chomp(":\n"), lines.join.strip)
|
155
171
|
elsif lines.first =~ /^[A-Z ]+: /
|
data/lib/mtif/version.rb
CHANGED
data/mtif.gemspec
CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_development_dependency "bundler"
|
22
|
-
spec.add_development_dependency "rake"
|
21
|
+
spec.add_development_dependency "bundler"
|
22
|
+
spec.add_development_dependency "rake"
|
23
23
|
spec.add_development_dependency "rspec"
|
24
24
|
spec.add_development_dependency "simplecov"
|
25
25
|
end
|
data/spec/mtif/post_spec.rb
CHANGED
@@ -3,7 +3,7 @@ RSpec.describe MTIF::Post do
|
|
3
3
|
expect(MTIF::Post.new([])).to respond_to(:source, :data)
|
4
4
|
end
|
5
5
|
|
6
|
-
|
6
|
+
describe 'class constants' do
|
7
7
|
it 'should have a list of valid single-value keys' do
|
8
8
|
expect(MTIF::Post).to have_constant('SINGLE_VALUE_KEYS')
|
9
9
|
expect(MTIF::Post::SINGLE_VALUE_KEYS).not_to be_empty
|
@@ -27,104 +27,112 @@ RSpec.describe MTIF::Post do
|
|
27
27
|
expect(MTIF::Post).to have_constant('VALID_KEYS')
|
28
28
|
expect(MTIF::Post::VALID_KEYS).to match_array((MTIF::Post::SINGLE_VALUE_KEYS + MTIF::Post::MULTILINE_KEYS + MTIF::Post::MULTIVALUE_KEYS).uniq)
|
29
29
|
end
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
30
|
+
end
|
31
|
+
|
32
|
+
describe 'instances' do
|
33
|
+
subject(:post) {MTIF::Post.new([])}
|
34
|
+
|
35
|
+
it {should respond_to(:valid_keys)}
|
36
|
+
context '#valid_keys' do
|
37
|
+
subject {post.valid_keys}
|
38
|
+
|
39
|
+
it {should == MTIF::Post::VALID_KEYS}
|
40
|
+
end
|
41
|
+
|
42
|
+
it {should respond_to(:valid_key?)}
|
43
|
+
describe '#valid_key?' do
|
44
|
+
context 'given a valid key' do
|
45
|
+
subject(:valid_key) {post.valid_keys.first}
|
46
|
+
|
47
|
+
it 'should be true' do
|
48
|
+
expect(post.valid_key?(valid_key)).to be_truthy
|
49
|
+
end
|
34
50
|
end
|
35
51
|
|
36
|
-
|
37
|
-
|
38
|
-
it {should respond_to(:valid_keys)}
|
39
|
-
context '#valid_keys' do
|
40
|
-
subject {@post.valid_keys}
|
52
|
+
context 'given a valid key name as a string' do
|
53
|
+
subject(:valid_key) {post.valid_keys.first.to_s}
|
41
54
|
|
42
|
-
it
|
55
|
+
it 'should be true' do
|
56
|
+
expect(post.valid_key?(valid_key)).to be_truthy
|
57
|
+
end
|
43
58
|
end
|
59
|
+
|
60
|
+
context 'given an invalid key' do
|
61
|
+
subject(:invalid_key) {post.valid_keys.first.to_s.reverse.to_sym}
|
44
62
|
|
45
|
-
|
46
|
-
|
47
|
-
it 'should be true when valid, false otherwise' do
|
48
|
-
valid_key = @post.valid_keys.first.to_sym
|
49
|
-
invalid_key = valid_key.to_s.reverse.to_sym
|
50
|
-
|
51
|
-
expect(@post.valid_key?(valid_key)).to be_truthy
|
52
|
-
expect(@post.valid_key?(valid_key.to_s)).to be_truthy
|
53
|
-
expect(@post.valid_key?(invalid_key)).to be_falsey
|
54
|
-
expect(@post.valid_key?(invalid_key.to_s)).to be_falsey
|
63
|
+
it 'should be false' do
|
64
|
+
expect(post.valid_key?(invalid_key)).to be_falsey
|
55
65
|
end
|
56
66
|
end
|
67
|
+
end
|
57
68
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
subject {@post.single_line_single_value_keys}
|
69
|
+
it {should respond_to(:single_line_single_value_keys)}
|
70
|
+
describe '#single_line_single_value_keys' do
|
71
|
+
subject {post.single_line_single_value_keys}
|
62
72
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
73
|
+
it {should_not include(*MTIF::Post::MULTILINE_KEYS)}
|
74
|
+
it {should_not include(*MTIF::Post::MULTIVALUE_KEYS)}
|
75
|
+
it {should include(*(MTIF::Post::SINGLE_VALUE_KEYS - MTIF::Post::MULTILINE_KEYS))}
|
76
|
+
end
|
67
77
|
|
68
|
-
|
69
|
-
|
70
|
-
|
78
|
+
it {should respond_to(:single_line_multivalue_keys)}
|
79
|
+
describe '#single_line_multivalue_keys' do
|
80
|
+
subject {post.single_line_multivalue_keys}
|
71
81
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
82
|
+
it {should_not include(*MTIF::Post::MULTILINE_KEYS)}
|
83
|
+
it {should_not include(*MTIF::Post::SINGLE_VALUE_KEYS)}
|
84
|
+
it {should include(*(MTIF::Post::MULTIVALUE_KEYS - MTIF::Post::MULTILINE_KEYS))}
|
85
|
+
end
|
76
86
|
|
77
|
-
|
78
|
-
|
79
|
-
|
87
|
+
it {should respond_to(:multiline_single_value_keys)}
|
88
|
+
describe '#multiline_single_value_keys' do
|
89
|
+
subject {post.multiline_single_value_keys}
|
80
90
|
|
81
|
-
|
82
|
-
|
83
|
-
|
91
|
+
it {should_not include(*MTIF::Post::MULTIVALUE_KEYS)}
|
92
|
+
it {should include(*(MTIF::Post::MULTILINE_KEYS & MTIF::Post::SINGLE_VALUE_KEYS))}
|
93
|
+
end
|
84
94
|
|
85
|
-
|
86
|
-
|
87
|
-
|
95
|
+
it {should respond_to(:multiline_multivalue_keys)}
|
96
|
+
describe '#multiline_multivalue_keys' do
|
97
|
+
subject {post.multiline_multivalue_keys}
|
88
98
|
|
89
|
-
|
90
|
-
|
91
|
-
end
|
92
|
-
end
|
99
|
+
it {should_not include(*MTIF::Post::SINGLE_VALUE_KEYS)}
|
100
|
+
it {should include(*(MTIF::Post::MULTILINE_KEYS & MTIF::Post::MULTIVALUE_KEYS))}
|
93
101
|
end
|
94
|
-
end
|
95
|
-
|
96
|
-
context 'fetching data' do
|
97
|
-
subject {MTIF::Post.new([])}
|
98
102
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
it {should_not respond_to(:this_is_not_a_valid_key=)}
|
103
|
+
describe '#method_missing' do
|
104
|
+
context 'acting as an attribute accessor for valid keys only' do
|
105
|
+
MTIF::Post::VALID_KEYS.each do |key|
|
106
|
+
it {should respond_to(key)}
|
107
|
+
it {should respond_to("#{key}=")}
|
108
|
+
end
|
106
109
|
|
107
|
-
|
108
|
-
|
110
|
+
it {should_not respond_to(:this_is_not_a_valid_key)}
|
111
|
+
it {should_not respond_to(:this_is_not_a_valid_key=)}
|
109
112
|
|
110
|
-
|
111
|
-
|
113
|
+
it 'should return arrays for multivalue keys by default' do
|
114
|
+
MTIF::Post::MULTIVALUE_KEYS.each do |key|
|
115
|
+
expect(post.send(key)) == []
|
116
|
+
end
|
117
|
+
end
|
112
118
|
end
|
113
119
|
end
|
114
120
|
end
|
115
|
-
|
116
|
-
|
121
|
+
|
122
|
+
describe 'instances with content' do
|
117
123
|
before :each do
|
118
|
-
# TODO: refactor to remove ordering dependency
|
119
124
|
@content = [
|
120
|
-
"AUTHOR: The Meyer Kids\n",
|
121
|
-
"TITLE: Crazy Parents: A Primer\n",
|
125
|
+
"AUTHOR: The ----- Meyer Kids\n",
|
126
|
+
"TITLE: Crazy Parents: -------- A Primer\n",
|
122
127
|
"DATE: 06/19/1999 07:00:00 PM\n",
|
123
128
|
"ALLOW COMMENTS: 0\n",
|
129
|
+
"PRIMARY CATEGORY: Fun!\n",
|
124
130
|
"CATEGORY: Fun!\n",
|
131
|
+
"CATEGORY: More Fun!\n",
|
132
|
+
"TAGS: \"Movable Type\",foo,bar\n",
|
125
133
|
"-----\n",
|
126
134
|
"BODY:\n",
|
127
|
-
"Start singing an obnoxious song and never stop.\n",
|
135
|
+
"Start singing an obnoxious song and ----- never ----- stop.\n",
|
128
136
|
"-----\n",
|
129
137
|
"COMMENT:\n",
|
130
138
|
"AUTHOR: Jim Meyer\n",
|
@@ -136,14 +144,48 @@ RSpec.describe MTIF::Post do
|
|
136
144
|
"-----\n",
|
137
145
|
"--------\n"
|
138
146
|
]
|
139
|
-
|
140
|
-
@post = MTIF::Post.new(@content)
|
141
147
|
end
|
142
148
|
|
143
|
-
|
144
|
-
|
145
|
-
|
149
|
+
subject(:post) {MTIF::Post.new(@content)}
|
150
|
+
|
151
|
+
it 'should correctly parse fields with separator text inside the field' do
|
152
|
+
expect(post.author).to eq("The ----- Meyer Kids")
|
153
|
+
expect(post.title).to eq("Crazy Parents: -------- A Primer")
|
154
|
+
expect(post.body).to eq("Start singing an obnoxious song and ----- never ----- stop.")
|
155
|
+
end
|
156
|
+
|
157
|
+
it 'should correctly parse tags as comma-separated values' do
|
158
|
+
expect(post.tags).to eq(["Movable Type","foo","bar"])
|
159
|
+
end
|
160
|
+
|
161
|
+
describe '#method_missing' do
|
162
|
+
it 'should properly update values' do
|
163
|
+
expect(post.allow_comments).not_to eq(1)
|
164
|
+
post.allow_comments = 1
|
165
|
+
expect(post.allow_comments).to eq(1)
|
166
|
+
end
|
146
167
|
end
|
147
|
-
end
|
148
168
|
|
169
|
+
describe '#to_mtif' do
|
170
|
+
it {should respond_to(:to_mtif)}
|
171
|
+
it 'should return concise MTIF containing only keys which are set' do
|
172
|
+
# TODO: one day this will break because the hash doesn't join in key order.
|
173
|
+
expect(post.to_mtif).to eq(@content.join)
|
174
|
+
end
|
175
|
+
|
176
|
+
it 'should include updated values' do
|
177
|
+
post.allow_comments = 1
|
178
|
+
expect(post.to_mtif).to match(/ALLOW COMMENTS: 1/)
|
179
|
+
end
|
180
|
+
|
181
|
+
it 'should convert tags to comma-separated values with proper quoting' do
|
182
|
+
expect(post.to_mtif).to match(/TAGS: "Movable Type",foo,bar/)
|
183
|
+
end
|
184
|
+
|
185
|
+
it 'should convert categories to multiple CATEGORY lines' do
|
186
|
+
expect(post.to_mtif).to match(/CATEGORY: Fun!/)
|
187
|
+
expect(post.to_mtif).to match(/CATEGORY: More Fun!/)
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
149
191
|
end
|
data/spec/mtif_spec.rb
CHANGED
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mtif
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jim Meyer
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
-
description:
|
69
|
+
description:
|
70
70
|
email:
|
71
71
|
- jim@geekdaily.org
|
72
72
|
executables: []
|
@@ -90,7 +90,7 @@ homepage: https://geekdaily.org/projects/mtif
|
|
90
90
|
licenses:
|
91
91
|
- MIT
|
92
92
|
metadata: {}
|
93
|
-
post_install_message:
|
93
|
+
post_install_message:
|
94
94
|
rdoc_options: []
|
95
95
|
require_paths:
|
96
96
|
- lib
|
@@ -105,9 +105,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
105
105
|
- !ruby/object:Gem::Version
|
106
106
|
version: '0'
|
107
107
|
requirements: []
|
108
|
-
|
109
|
-
|
110
|
-
signing_key:
|
108
|
+
rubygems_version: 3.2.3
|
109
|
+
signing_key:
|
111
110
|
specification_version: 4
|
112
111
|
summary: Read, parse, and write Movable Type Import Format files.
|
113
112
|
test_files:
|