md_metadata_extractor 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []