md_metadata_extractor 0.0.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 +7 -0
- data/Gemfile +5 -0
- data/Rakefile +8 -0
- data/lib/md_metadata_extractor.rb +41 -0
- data/test/md_metadata_extractor_test.rb +39 -0
- metadata +47 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 50071436090d012df8b8310ee9c0063c25486c8792856d9921f20870b7416cc1
|
4
|
+
data.tar.gz: 6a1c992cc84bd4a96d6a6adf77ea17f268eef3c2d8a7df88bb0c687a7246810b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ee81b949e9e842fc947290ac662059424c52f95c3ec53d81f0e35fc4cb7a84baacda45dae4384768a18df1c3a8bb285e8b3b3eea425fee99c2ef7aa73fa2711d
|
7
|
+
data.tar.gz: 1b504b93576c7bed3f3787b722b33b304a13f54aebbf0a93dc631837dc4a0588e72f62b39f8e9021938a92c1dd0248c95eb361b3f7e195245e167c84689df10b
|
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
require "pp"
|
2
|
+
module MdMetadata
|
3
|
+
class Extractor
|
4
|
+
attr_accessor :mode
|
5
|
+
def initialize
|
6
|
+
# Define input data
|
7
|
+
@input = ""
|
8
|
+
@result = {}
|
9
|
+
@mode = :hugo
|
10
|
+
end
|
11
|
+
|
12
|
+
##
|
13
|
+
# Loads an input string for processing, returns a hash of values
|
14
|
+
# based on said metadata
|
15
|
+
def load_md(input)
|
16
|
+
@input = input
|
17
|
+
@metadata = ""
|
18
|
+
case @mode
|
19
|
+
when :hugo
|
20
|
+
@metadata = /\+\+\+(.*)\+\+\+/m.match(@input).to_s.delete("+++")
|
21
|
+
when :jekyll
|
22
|
+
@metadata = /\-\-\-(.*)\-\-\-/m.match(@input).to_s.delete("---")
|
23
|
+
end
|
24
|
+
@metadata.each_line do |line|
|
25
|
+
case @mode
|
26
|
+
when :hugo
|
27
|
+
meta = line.split("=")
|
28
|
+
when :jekyll
|
29
|
+
meta = line.split(":")
|
30
|
+
end
|
31
|
+
unless meta[1].nil?
|
32
|
+
meta[0].strip!
|
33
|
+
meta[1].strip!.gsub! '"', ''
|
34
|
+
@result[meta[0]] = meta[1]
|
35
|
+
end
|
36
|
+
end
|
37
|
+
@result
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require "minitest/autorun"
|
2
|
+
require "md_metadata_extractor"
|
3
|
+
|
4
|
+
class TestExtractor < Minitest::Test
|
5
|
+
def setup
|
6
|
+
@importer = MdMetadata::Extractor.new
|
7
|
+
@testCaseJekyll = <<-MD
|
8
|
+
---
|
9
|
+
title : "My Title"
|
10
|
+
date : "2014-11-17 19:38:31 +0000 UTC"
|
11
|
+
description : "here goes the post description"
|
12
|
+
keywords : "here goes the metadata"
|
13
|
+
---
|
14
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
15
|
+
MD
|
16
|
+
@testCaseHugo = <<-MD
|
17
|
+
+++
|
18
|
+
title = "My Title"
|
19
|
+
date = "2014-11-17 19:38:31 +0000 UTC"
|
20
|
+
description = "here goes the post description"
|
21
|
+
keywords = "here goes the metadata"
|
22
|
+
+++
|
23
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
24
|
+
MD
|
25
|
+
end
|
26
|
+
def test_load_md
|
27
|
+
output = @importer.load_md @testCaseHugo
|
28
|
+
assert_instance_of Hash, output
|
29
|
+
end
|
30
|
+
def test_extracts_title_from_hugo_metadata
|
31
|
+
output = @importer.load_md @testCaseHugo
|
32
|
+
assert_equal "My Title", output["title"]
|
33
|
+
end
|
34
|
+
def test_extracts_title_from_jekyll_metadata
|
35
|
+
@importer.mode = :jekyll
|
36
|
+
output = @importer.load_md @testCaseJekyll
|
37
|
+
assert_equal "My Title", output["title"]
|
38
|
+
end
|
39
|
+
end
|
metadata
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: md_metadata_extractor
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Juan Francisco Giménez Silva
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-11-12 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description:
|
14
|
+
email: juanfgs@gmail.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- Gemfile
|
20
|
+
- Rakefile
|
21
|
+
- lib/md_metadata_extractor.rb
|
22
|
+
- test/md_metadata_extractor_test.rb
|
23
|
+
homepage:
|
24
|
+
licenses:
|
25
|
+
- GPLv3
|
26
|
+
metadata: {}
|
27
|
+
post_install_message:
|
28
|
+
rdoc_options: []
|
29
|
+
require_paths:
|
30
|
+
- lib
|
31
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - ">="
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
36
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
requirements: []
|
42
|
+
rubyforge_project:
|
43
|
+
rubygems_version: 2.7.6
|
44
|
+
signing_key:
|
45
|
+
specification_version: 4
|
46
|
+
summary: Metadata extractor for Jekyll/Hugo md files
|
47
|
+
test_files: []
|