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 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
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org/'
2
+ gem "rake"
3
+ group :test do
4
+ gem "minitest"
5
+ end
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ require 'rake/testtask'
2
+ Rake::TestTask.new(:test) do |t|
3
+ t.libs << "test"
4
+ t.libs << "lib"
5
+ t.test_files = FileList['test/*_test.rb']
6
+ end
7
+
8
+ task :default => :test
@@ -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: []