hatenablog_publisher 0.1.2 → 0.1.3
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 +4 -4
- data/Gemfile +1 -1
- data/Gemfile.lock +11 -3
- data/lib/hatenablog_publisher/context.rb +20 -2
- data/lib/hatenablog_publisher/entry.rb +1 -1
- data/lib/hatenablog_publisher/io.rb +13 -17
- data/lib/hatenablog_publisher/version.rb +1 -1
- data/renovate.json +5 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b4d7a12f8c90dd7935b75ae3d38c753be5de35c90d04359838c2f7bf287d6240
|
4
|
+
data.tar.gz: 77109bd61c92b19ed09435e935100d40331cb627b8dbaeff95856ba86180d643
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 236522c0ec5b627ce2ccaff7800b06613ef7fdc019dff261a62658a64a9a01179788bac6878af44019f85ec728570b3f55ebf5c8efb14e9dd6ae24ccf12d5582
|
7
|
+
data.tar.gz: aa73000a6526d5b1a5235c270a967f9451c444ca33f8bb664aa64a09aacd21660b78021d2f4fe0e0a5c9b41913b86a41a74b062618506012868da82168f21602
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,14 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
hatenablog_publisher (0.1.
|
4
|
+
hatenablog_publisher (0.1.2)
|
5
|
+
activesupport
|
6
|
+
front_matter_parser
|
7
|
+
mime-types
|
8
|
+
oauth
|
9
|
+
oga
|
10
|
+
sanitize
|
11
|
+
xml-simple
|
5
12
|
|
6
13
|
GEM
|
7
14
|
remote: https://rubygems.org/
|
@@ -48,7 +55,7 @@ GEM
|
|
48
55
|
byebug (~> 11.0)
|
49
56
|
pry (~> 0.13.0)
|
50
57
|
rainbow (3.0.0)
|
51
|
-
rake (
|
58
|
+
rake (13.0.1)
|
52
59
|
rexml (3.2.4)
|
53
60
|
rspec (3.9.0)
|
54
61
|
rspec-core (~> 3.9.0)
|
@@ -92,13 +99,14 @@ PLATFORMS
|
|
92
99
|
DEPENDENCIES
|
93
100
|
activesupport
|
94
101
|
awesome_print
|
102
|
+
bundler
|
95
103
|
front_matter_parser
|
96
104
|
hatenablog_publisher!
|
97
105
|
mime-types
|
98
106
|
oauth
|
99
107
|
oga
|
100
108
|
pry-byebug
|
101
|
-
rake (~>
|
109
|
+
rake (~> 13.0)
|
102
110
|
rspec (~> 3.0)
|
103
111
|
rubocop
|
104
112
|
sanitize
|
@@ -1,10 +1,11 @@
|
|
1
1
|
require 'yaml'
|
2
|
+
require 'time'
|
2
3
|
require 'front_matter_parser'
|
3
4
|
require 'active_support/core_ext/hash'
|
4
5
|
|
5
6
|
module HatenablogPublisher
|
6
7
|
class Context
|
7
|
-
attr_reader :title, :categories, :text, :hatena
|
8
|
+
attr_reader :title, :categories, :updated, :text, :hatena
|
8
9
|
|
9
10
|
def initialize(io)
|
10
11
|
@io = io
|
@@ -40,19 +41,36 @@ module HatenablogPublisher
|
|
40
41
|
def add_entry_context(entry)
|
41
42
|
@hatena ||= {}
|
42
43
|
@hatena[:id] = entry['id'].first.split('-').last
|
44
|
+
@updated = time_to_s(entry['updated'].first)
|
45
|
+
end
|
46
|
+
|
47
|
+
def time_to_s(str)
|
48
|
+
Time.parse(str).strftime('%Y-%m-%dT%H:%M:%S')
|
49
|
+
end
|
50
|
+
|
51
|
+
def metadata
|
52
|
+
{
|
53
|
+
title: @title,
|
54
|
+
category: @categories,
|
55
|
+
updated: @updated,
|
56
|
+
hatena: @hatena
|
57
|
+
}
|
43
58
|
end
|
44
59
|
|
45
60
|
private
|
46
61
|
|
47
62
|
def write_context
|
48
|
-
@io.write(
|
63
|
+
@io.write(metadata, @text)
|
49
64
|
end
|
50
65
|
|
51
66
|
def read_context
|
52
67
|
data, text = @io.read
|
53
68
|
|
69
|
+
updated = data[:updated].to_s.empty? ? '' : time_to_s(data[:updated])
|
70
|
+
|
54
71
|
@text = text
|
55
72
|
@categories = data[:category]
|
73
|
+
@updated = updated
|
56
74
|
@title = data[:title]
|
57
75
|
@hatena = data[:hatena] || {}
|
58
76
|
end
|
@@ -12,36 +12,32 @@ module HatenablogPublisher
|
|
12
12
|
@options.data_file
|
13
13
|
end
|
14
14
|
|
15
|
-
def
|
15
|
+
def yaml_loader
|
16
|
+
FrontMatterParser::Loader::Yaml.new(whitelist_classes: [Time])
|
17
|
+
end
|
18
|
+
|
19
|
+
def write(metadata, text)
|
16
20
|
if data_file?
|
17
|
-
write_data_file(
|
21
|
+
write_data_file(metadata)
|
18
22
|
else
|
19
|
-
write_file(
|
23
|
+
write_file(metadata, text)
|
20
24
|
end
|
21
25
|
end
|
22
26
|
|
23
|
-
def write_data_file(
|
27
|
+
def write_data_file(metadata)
|
24
28
|
data = JSON.parse(File.read(@options.data_file))
|
25
29
|
data.each do |l|
|
26
30
|
next unless l['filepath'] == @options.filename
|
27
31
|
|
28
|
-
l.merge!(
|
29
|
-
title: title,
|
30
|
-
category: category,
|
31
|
-
hatena: hatena
|
32
|
-
)
|
32
|
+
l.deep_symbolize_keys!.merge!(metadata)
|
33
33
|
end
|
34
34
|
File.write(data_file, JSON.pretty_generate(data, indent: ' ', space_before: ' '))
|
35
35
|
end
|
36
36
|
|
37
|
-
def write_file(
|
37
|
+
def write_file(metadata, text)
|
38
38
|
filename = @options.filename
|
39
|
-
parsed = FrontMatterParser::Parser.parse_file(filename)
|
40
|
-
front_matter = parsed.front_matter.deep_symbolize_keys.merge(
|
41
|
-
title: title,
|
42
|
-
category: category,
|
43
|
-
hatena: hatena
|
44
|
-
)
|
39
|
+
parsed = FrontMatterParser::Parser.parse_file(filename, loader: yaml_loader)
|
40
|
+
front_matter = parsed.front_matter.deep_symbolize_keys.merge(metadata)
|
45
41
|
body = YAML.dump(front_matter.deep_stringify_keys) + "\n---\n\n" + text
|
46
42
|
File.write(filename, body)
|
47
43
|
end
|
@@ -64,7 +60,7 @@ module HatenablogPublisher
|
|
64
60
|
end
|
65
61
|
|
66
62
|
def read_from_file(filename)
|
67
|
-
parsed = FrontMatterParser::Parser.parse_file(filename)
|
63
|
+
parsed = FrontMatterParser::Parser.parse_file(filename, loader: yaml_loader)
|
68
64
|
|
69
65
|
[parsed.front_matter.deep_symbolize_keys, parsed.content]
|
70
66
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hatenablog_publisher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- swfz
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-05-
|
11
|
+
date: 2020-05-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -214,6 +214,7 @@ files:
|
|
214
214
|
- lib/hatenablog_publisher/photolife.rb
|
215
215
|
- lib/hatenablog_publisher/request_logger.rb
|
216
216
|
- lib/hatenablog_publisher/version.rb
|
217
|
+
- renovate.json
|
217
218
|
homepage: https://github.com/swfz/hatenablog_publisher
|
218
219
|
licenses:
|
219
220
|
- MIT
|