middleman-calendar 0.1.0

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
+ SHA1:
3
+ metadata.gz: 7a520c2ee0c18991ea28773947663581048f0149
4
+ data.tar.gz: 149687f1af830ff67c256b31da46291dc48c5fc5
5
+ SHA512:
6
+ metadata.gz: 7bb600d81a6388053ecc9f37dc33ea43dadf37f264227417d7670997fe54b66af36910d858dabd0869e733df0997d10906c7b8bef7eece177cfcdd85de9fc564
7
+ data.tar.gz: 9c61d02b65f75179912458b0e164ec9a56aa1e3eb56f40d628c339d477722658f0a75169d1e61eca13a464a51304c019d705513b8a4b822c763b20d102e1e2d4
data/.gitignore ADDED
@@ -0,0 +1,10 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.gem
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.3.1
5
+ before_install: gem install bundler -v 1.12.5
data/Gemfile ADDED
@@ -0,0 +1,15 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in middleman-calendar.gemspec
4
+ gemspec
5
+
6
+ group :development do
7
+ gem 'rake', '~> 0.9.2'
8
+ gem 'rdoc', '~> 3.9'
9
+ gem 'yard', '~> 0.8.0'
10
+ end
11
+
12
+ group :test do
13
+ gem 'rspec', '~> 3.4'
14
+ gem 'capybara', '~> 2.5'
15
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Daniel Siemer
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,102 @@
1
+ # Middleman::Calendar
2
+
3
+ When building the site for my [comic](http://bobscomic.com) in [middleman](https://middlemanapp.com), I wanted a graphical calendar for the archives, and in looking for solutions,
4
+ I found [week_of_month](https://github.com/sachin87/week-of-month) which let me build a GUI fairly easily
5
+
6
+ The calendar is stylable to your desire (and does require some styling to not just be an ugly list of lists), and an example is provided below
7
+
8
+ This is my time creating a gem, so admit that it's not probably entirely correctly done.
9
+
10
+ ## Installation
11
+
12
+ Add this line to your application's Gemfile:
13
+
14
+ ```ruby
15
+ gem 'middleman-calendar'
16
+ ```
17
+
18
+ And then execute:
19
+
20
+ $ bundle
21
+
22
+ Or install it yourself as:
23
+
24
+ $ gem install middleman-calendar
25
+
26
+
27
+ ## Usage
28
+
29
+ Activate it in your site's config.rb
30
+ ```ruby
31
+ activate :calendar
32
+ ```
33
+
34
+ To display a calendar:
35
+ ```ruby
36
+ <%= calendar(article) %>
37
+ ```
38
+
39
+ You can also optionally specify a blog
40
+ ```ruby
41
+ <%= calendar(article, 'blog') %>
42
+ ```
43
+
44
+
45
+ You will also need to have some CSS styling for it
46
+
47
+ ```css
48
+ .middleman_calendar_div {
49
+ width:auto;
50
+ padding:10px;
51
+
52
+ .middleman_calendar_previous_link {
53
+ float:left;
54
+ }
55
+ .middleman_calendar_month_link {
56
+ float:center;
57
+ }
58
+ .middleman_calendar_next_link {
59
+ float:right;
60
+ }
61
+
62
+ ul {
63
+ list-style-type:none;
64
+ padding:0px;
65
+ margin:0px;
66
+
67
+ li {
68
+ margin-left:0px;
69
+ margin-top:5px;
70
+ margin-bottom:0px;
71
+
72
+ ul {
73
+ columns:7;
74
+ list-style-type:none;
75
+ padding:0px;
76
+ margin:0px;
77
+ margin-left:5px;
78
+ margin-right:5px;
79
+
80
+ li {
81
+ border-width:1px;
82
+ border-style:solid;
83
+ margin:0px;
84
+ padding-left:3px;
85
+ padding-right:3px;
86
+ margin-left:-5px;
87
+ margin-right:-5px;
88
+ }
89
+ }
90
+ }
91
+ }
92
+ }
93
+ ```
94
+
95
+ ## Contributing
96
+
97
+ Bug reports and pull requests are welcome on GitHub at https://github.com/jcfalkenberg/middleman-calendar.
98
+
99
+ ## License
100
+
101
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
102
+
data/Rakefile ADDED
@@ -0,0 +1,5 @@
1
+ require 'rspec/core/rake_task'
2
+
3
+ RSpec::Core::RakeTask.new(:spec)
4
+
5
+ task :default => :spec
@@ -0,0 +1,10 @@
1
+ activate :calendar
2
+
3
+ activate :blog do |blog|
4
+ blog.name = "blog"
5
+ blog.sources = "blog/{year}-{month}-{day}.html"
6
+ blog.permalink = "{year}-{month}-{day}.html"
7
+ blog.layout = "basic"
8
+
9
+ blog.calendar_template = "archive.html"
10
+ end
File without changes
@@ -0,0 +1,4 @@
1
+ ---
2
+ title: testing previous month
3
+ date: 2016-05-29
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ title: testing current day
3
+ date: 2016-06-15
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ title: testing next day
3
+ date: 2016-06-16
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ title: testing next month
3
+ date: 2016-07-01
4
+ ---
@@ -0,0 +1 @@
1
+ <%= calendar(current_article) %>
@@ -0,0 +1,106 @@
1
+ <div class="middleman_calendar_div">
2
+ <% WeekOfMonth.configuration.monday_active = false %>
3
+ <% articlesForMonth = Hash.new %>
4
+ <% articlesForMonthArray = Array.new %>
5
+
6
+ <% previousTest = @calendar_article.previous_article %>
7
+ <% while previousTest %>
8
+ <% if previousTest.date.year == @calendar_article.date.year && previousTest.date.month == @calendar_article.date.month %>
9
+ <% articlesForMonth[previousTest.date.day] = previousTest %>
10
+ <% articlesForMonthArray += [previousTest] %>
11
+ <% previousTest = previousTest.previous_article %>
12
+ <% else %>
13
+ <% previousTest = nil %>
14
+ <% end %>
15
+ <% end %>
16
+ <% articlesForMonthArray = articlesForMonthArray.reverse() %>
17
+ <% articlesForMonthArray += [@calendar_article] %>
18
+ <% articlesForMonth[@calendar_article.date.day] = article %>
19
+
20
+ <% nextTest = @calendar_article.next_article %>
21
+ <% while nextTest %>
22
+ <% if nextTest.date.year == @calendar_article.date.year && nextTest.date.month == @calendar_article.date.month %>
23
+ <% articlesForMonth[nextTest.date.day] = nextTest %>
24
+ <% articlesForMonthArray += [nextTest] %>
25
+ <% nextTest = nextTest.next_article %>
26
+ <% else %>
27
+ <% nextTest = nil %>
28
+ <% end %>
29
+ <% end %>
30
+
31
+ <% first_article = articlesForMonthArray.first %>
32
+
33
+ <span class="middleman_calendar_previous_link">
34
+ <% if first_article %>
35
+ <% previous = first_article.previous_article %>
36
+ <% if previous %>
37
+ <%= link_to "<<", previous %>
38
+ <% else %>
39
+ <%= "<<" %>
40
+ <% end %>
41
+ <% else %>
42
+ <%= "<<" %>
43
+ <% end %>
44
+ </span>
45
+
46
+ <span class="middleman_calendar_month_link">
47
+ <%= link_to @calendar_article.date.strftime("%B %Y"), blog_month_path(@calendar_article.date.year, @calendar_article.date.month, @blog_name) %>
48
+ </span>
49
+
50
+ <span class="middleman_calendar_next_link">
51
+ <% last_calendar_article = articlesForMonthArray.last %>
52
+ <% if last_calendar_article %>
53
+ <% nextarticle = last_calendar_article.next_article %>
54
+ <% if nextarticle %>
55
+ <%= link_to ">>", nextarticle %>
56
+ <% else %>
57
+ <%= ">>" %>
58
+ <% end %>
59
+ <% else %>
60
+ <%= ">>" %>
61
+ <% end %>
62
+ </span>
63
+
64
+ <br>
65
+ <ul>
66
+ <% days = @calendar_article.date.week_split %>
67
+ <li>
68
+ <ul>
69
+ <li>S</li>
70
+ <li>M</li>
71
+ <li>T</li>
72
+ <li>W</li>
73
+ <li>T</li>
74
+ <li>F</li>
75
+ <li>S</li>
76
+ </ul>
77
+ </li>
78
+ <% days.each_with_index do |week, week_index| %>
79
+ <li>
80
+ <ul>
81
+ <% week.each do |day| %>
82
+ <li>
83
+ <% articleForDay = articlesForMonth[day] %>
84
+ <% if articleForDay %>
85
+ <%= link_to day, articleForDay %>
86
+ <% else %>
87
+ <% if day %>
88
+ <%= day %>
89
+ <% else %>
90
+ -
91
+ <% end %>
92
+ <% end %>
93
+ </li>
94
+ <% end %>
95
+ <% if week_index + 1 == @calendar_article.date.total_weeks %>
96
+ <% if week.count < 7 %>
97
+ <% for i in (week.count)..6 %>
98
+ <li>-</li>
99
+ <% end %>
100
+ <% end %>
101
+ <% end %>
102
+ </ul>
103
+ </li>
104
+ <% end %>
105
+ </ul>
106
+ </div>
@@ -0,0 +1,23 @@
1
+ require 'middleman-core'
2
+ require 'middleman-blog'
3
+ require 'week_of_month'
4
+
5
+ module Middleman
6
+ class CalendarExtension < Extension
7
+ def initialize(app, options_hash={}, &block)
8
+ super
9
+ # place in class variable so helpers can access
10
+ @@calendar_article = nil
11
+ end
12
+
13
+ helpers do
14
+ def calendar(article, blog_name='blog')
15
+ @calendar_article = article
16
+ @blog_name = blog_name
17
+
18
+ file = File.join(File.dirname(__FILE__), 'calendar.erb')
19
+ ERB.new(File.read(file), 0, '>').result(binding)
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,5 @@
1
+ module Middleman
2
+ module Calendar
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
@@ -0,0 +1,8 @@
1
+ require 'middleman-core'
2
+ require 'middleman-blog'
3
+ require 'middleman/calendar/version'
4
+
5
+ ::Middleman::Extensions.register(:calendar) do
6
+ require 'middleman/calendar/extension'
7
+ ::Middleman::CalendarExtension
8
+ end
@@ -0,0 +1,30 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+ require 'middleman/calendar/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "middleman-calendar"
7
+ spec.version = Middleman::Calendar::VERSION
8
+ spec.authors = ["Daniel Siemer"]
9
+ spec.email = ["jcfalkenberg@mac.com"]
10
+
11
+ spec.summary = %q{Generates a calendar GUI for your middleman blog}
12
+ spec.description = %q{Middleman-Calendar creates a list based, stylable calendar GUI for middleman blogs}
13
+ spec.homepage = "https://github.com/jcfalkenberg/middleman-calendar"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ spec.bindir = "exe"
18
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
+ spec.require_paths = ["lib"]
20
+ spec.test_files = `git ls-files -- {features,fixtures}/*`.split("\n")
21
+
22
+
23
+ spec.add_development_dependency "bundler", "~> 1.12"
24
+ spec.add_development_dependency "rake", "~> 10.0"
25
+ spec.add_development_dependency "rspec", "~> 3.0"
26
+
27
+ spec.add_runtime_dependency('middleman', ['~> 4.1'])
28
+ spec.add_runtime_dependency('middleman-blog', ['~> 4.0'])
29
+ spec.add_runtime_dependency('week_of_month', ['~> 1.2'])
30
+ end
metadata ADDED
@@ -0,0 +1,156 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: middleman-calendar
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Daniel Siemer
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-06-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.12'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.12'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: middleman
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '4.1'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '4.1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: middleman-blog
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '4.0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '4.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: week_of_month
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.2'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.2'
97
+ description: Middleman-Calendar creates a list based, stylable calendar GUI for middleman
98
+ blogs
99
+ email:
100
+ - jcfalkenberg@mac.com
101
+ executables: []
102
+ extensions: []
103
+ extra_rdoc_files: []
104
+ files:
105
+ - ".gitignore"
106
+ - ".rspec"
107
+ - ".travis.yml"
108
+ - Gemfile
109
+ - LICENSE.txt
110
+ - README.md
111
+ - Rakefile
112
+ - fixtures/calendar-app/config.rb
113
+ - fixtures/calendar-app/source/archive.html.erb
114
+ - fixtures/calendar-app/source/blog/2016-05-29.html.markdown
115
+ - fixtures/calendar-app/source/blog/2016-06-15.html.markdown
116
+ - fixtures/calendar-app/source/blog/2016-06-16.html.markdown
117
+ - fixtures/calendar-app/source/blog/2016-07-01.html.markdown
118
+ - fixtures/calendar-app/source/layouts/basic.erb
119
+ - lib/middleman/calendar.rb
120
+ - lib/middleman/calendar/calendar.erb
121
+ - lib/middleman/calendar/extension.rb
122
+ - lib/middleman/calendar/version.rb
123
+ - middleman-calendar.gemspec
124
+ homepage: https://github.com/jcfalkenberg/middleman-calendar
125
+ licenses:
126
+ - MIT
127
+ metadata: {}
128
+ post_install_message:
129
+ rdoc_options: []
130
+ require_paths:
131
+ - lib
132
+ required_ruby_version: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ required_rubygems_version: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ requirements: []
143
+ rubyforge_project:
144
+ rubygems_version: 2.5.1
145
+ signing_key:
146
+ specification_version: 4
147
+ summary: Generates a calendar GUI for your middleman blog
148
+ test_files:
149
+ - fixtures/calendar-app/config.rb
150
+ - fixtures/calendar-app/source/archive.html.erb
151
+ - fixtures/calendar-app/source/blog/2016-05-29.html.markdown
152
+ - fixtures/calendar-app/source/blog/2016-06-15.html.markdown
153
+ - fixtures/calendar-app/source/blog/2016-06-16.html.markdown
154
+ - fixtures/calendar-app/source/blog/2016-07-01.html.markdown
155
+ - fixtures/calendar-app/source/layouts/basic.erb
156
+ has_rdoc: