middleman-csv 0.1.0

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: 92b39ded14850a825c99ea6e5ed4dc088d7f673adbf144468dc7da1268b64183
4
+ data.tar.gz: 3ba5b52e3377f1c86916219655152e2093a65f7e820942f11a7d9c9a4accc227
5
+ SHA512:
6
+ metadata.gz: f18a8d9d6f33a752a11c25e23027574b7ebc0f7609a080032388830e508d6ada3e243e94ea6ebd85c37bbe11a001e79a9de4289ce7c289e98d323962156b6a05
7
+ data.tar.gz: a51794083172ab631ff9da9e1d3f4f2596a45e69d25088b0bad1feb2a1eb10dd1c1a92711639ecc1dd53cd04ce274aadb3e9736b1ec4c1eb99f257d2e33c36ff
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ # Ignore bundler lock file
2
+ /Gemfile.lock
3
+
4
+ # Ignore pkg folder
5
+ /pkg
data/Gemfile ADDED
@@ -0,0 +1,18 @@
1
+ # If you do not have OpenSSL installed, update
2
+ # the following line to use "http://" instead
3
+ source 'https://rubygems.org'
4
+
5
+ # Specify your gem's dependencies in middleman-csv.gemspec
6
+ gemspec
7
+
8
+ group :development do
9
+ gem 'rake'
10
+ gem 'rdoc'
11
+ gem 'yard'
12
+ end
13
+
14
+ group :test do
15
+ gem 'cucumber'
16
+ gem 'aruba'
17
+ gem 'rspec'
18
+ end
data/Rakefile ADDED
@@ -0,0 +1,14 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'cucumber/rake/task'
5
+
6
+ Cucumber::Rake::Task.new(:cucumber, 'Run features that should pass') do |t|
7
+ t.cucumber_opts = '--color --tags ~@wip --strict'
8
+ end
9
+
10
+ require 'rake/clean'
11
+
12
+ task test: ['cucumber']
13
+
14
+ task default: :test
@@ -0,0 +1,4 @@
1
+ PROJECT_ROOT_PATH = File.dirname(File.dirname(File.dirname(__FILE__)))
2
+ require 'middleman-core'
3
+ require 'middleman-core/step_definitions'
4
+ require File.join(PROJECT_ROOT_PATH, 'lib', 'middleman-csv')
@@ -0,0 +1,46 @@
1
+ require 'csv'
2
+
3
+ class CsvGenerator < ::Middleman::Extension
4
+ option :my_option, 'default', 'An example option'
5
+
6
+ def initialize(app, options_hash = {}, &block)
7
+ super
8
+ end
9
+
10
+ def after_build(builder)
11
+ @builder = builder
12
+ build_csv('posts.csv', posts)
13
+ end
14
+
15
+ def build_csv(name, pages)
16
+ build_dir = app.config.build_dir
17
+ file_path = File.join(build_dir, name)
18
+ generte_csv(pages, file_path)
19
+
20
+ @builder.thor.say_status :create, file_path
21
+
22
+ return file_path
23
+ end
24
+
25
+ def generte_csv(pages, path)
26
+ CSV.open(path, "wb") do |csv|
27
+ csv << %w[title summary slug locale body published_on]
28
+ pages.each do |page|
29
+ if page.is_a?(Middleman::Blog::BlogArticle)
30
+ csv << [
31
+ page.title,
32
+ page.summary,
33
+ page.slug,
34
+ page.locale,
35
+ page.render(layout: false),
36
+ page.date.strftime("%Y-%m-%d")
37
+ ]
38
+ end
39
+ end
40
+ end
41
+ end
42
+
43
+ def posts
44
+ @posts ||= app.sitemap.resources.find_all { |p| p.ext == ".html" && !p.data.ignore }
45
+ end
46
+ end
@@ -0,0 +1,6 @@
1
+ require "middleman-core"
2
+
3
+ Middleman::Extensions.register :csv do
4
+ require "middleman-csv/extension"
5
+ CsvGenerator
6
+ end
@@ -0,0 +1 @@
1
+ require 'middleman-csv'
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "middleman-csv"
6
+ s.version = "0.1.0"
7
+ s.platform = Gem::Platform::RUBY
8
+ s.authors = ["Yuri Kovalov"]
9
+ s.email = ["yuri@yurikoval.com"]
10
+ s.homepage = 'https://www.yurikoval.com/middleman-csv'
11
+ s.summary = 'Middleman plugin for generating CSV from blog posts'
12
+ s.description = 'A Middleman plugin that renders all blog posts in CSV format'
13
+ s.license = 'MIT'
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+ s.require_paths = ["lib"]
19
+
20
+ s.add_runtime_dependency("middleman-core", ["~> 4.0"])
21
+ end
metadata ADDED
@@ -0,0 +1,66 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: middleman-csv
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Yuri Kovalov
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-06-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: middleman-core
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.0'
27
+ description: A Middleman plugin that renders all blog posts in CSV format
28
+ email:
29
+ - yuri@yurikoval.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".gitignore"
35
+ - Gemfile
36
+ - Rakefile
37
+ - features/support/env.rb
38
+ - lib/middleman-csv.rb
39
+ - lib/middleman-csv/extension.rb
40
+ - lib/middleman_extension.rb
41
+ - middleman-csv.gemspec
42
+ homepage: https://www.yurikoval.com/middleman-csv
43
+ licenses:
44
+ - MIT
45
+ metadata: {}
46
+ post_install_message:
47
+ rdoc_options: []
48
+ require_paths:
49
+ - lib
50
+ required_ruby_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ requirements: []
61
+ rubygems_version: 3.3.26
62
+ signing_key:
63
+ specification_version: 4
64
+ summary: Middleman plugin for generating CSV from blog posts
65
+ test_files:
66
+ - features/support/env.rb