jekyll-rp_logs 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d0ead8952d9f22967672f557f24b4ec9d58bd617
4
- data.tar.gz: 77b08ff2e7021cc8925a2b3ef471b33dcd35dc43
3
+ metadata.gz: 17dd1b74dd69b9a81d008a8bee295fc4bf70c483
4
+ data.tar.gz: 61f75839072b83d0da06429c47bfb9ae0ead21db
5
5
  SHA512:
6
- metadata.gz: b240676829e68d51b9e80582282df3dc6c1857dcac4ecd00543c7dbeaa24fa42c6d504720ebb6a49bf9cf239d9e6410b1a907a94e4a2ce2517742a505799340a
7
- data.tar.gz: 152cae97b5fcbde92e1e00759abc9c7856914dc6f6a1924af3f2b41387bb60b6531635711922593ab249d7bc1619766956b3f1c1eff5aafb744ccfdacab13896
6
+ metadata.gz: 800483262e0d8a34cb63e911146fd0e3d4135f4b898bbb0aae60ecfcaf1b62c42fe2409f37a7b41ebad8f4e1718369b8c90230d5a2879b4b6e90db7fb1231920
7
+ data.tar.gz: ef89da9dd05867089d6df588614fabafdc839dd9c7aa9428707b82eecdea6c5423f86175604dd30ff4a3238edf0e8dbe8c1f1150b62eb68a61b250e9654c5044
@@ -38,6 +38,22 @@ max_seconds_between_posts: 3
38
38
  # of strict_ooc and automatically converting OOC emotes to OOC text.
39
39
  ooc_start_delimiters: "(["
40
40
 
41
+ # This allows you to set up implications, where something tagged with one tag
42
+ # will automatically be tagged with other tags, in a list.
43
+ # The implied tags need to be a list, even if there's only one.
44
+ tag_implications:
45
+ # These are just examples, feel free to delete them!
46
+ apple: [fruit]
47
+ lorem ipsum: [dolor, sit amet]
48
+
49
+ # Tag aliases function just like implications, except the original tag is
50
+ # removed. So they effectively convert one tag into another tag. Or tags.
51
+ tag_aliases:
52
+ # These are just examples, feel free to delete them!
53
+ char:John_Smith: ["char:John"] # Needs the quotes because of the :
54
+ etaoin: [etaoin shrdlu]
55
+
56
+
41
57
  collections:
42
58
  # The RPs must be in a directory named exactly this, prefixed by an underscore.
43
59
  # So by default: _rps/
@@ -60,5 +76,6 @@ defaults:
60
76
  layout: rp
61
77
  merge_text_into_rp: []
62
78
  permalink: /:path/
79
+ rp_tag_implications: true
63
80
  rp_tags: ""
64
81
  strict_ooc: false
@@ -11,7 +11,15 @@ layout: default
11
11
  </header>
12
12
 
13
13
  <article class="post-content">
14
- {% if page.start_date %}<p>Started {{ page.start_date | date: "%-d %B %Y" }}</p>{% endif %}
14
+ <div id="tag-and-date">
15
+ <div class="tags">
16
+ {% for t in page.rp_tags %}
17
+ <a href="{{ site.baseurl }}{{ site.rp_tag_dir }}/{{ t.dir }}" class="rp-tag {{t.classes}}">{{ t.name }}</a>
18
+ {% endfor %}
19
+ </div>
20
+
21
+ {% if page.start_date %}<p class="start-date"><span class="fa fa-calendar-o"></span> {{ page.start_date | date: "%-d %B %Y" }}</p>{% endif %}
22
+ </div>
15
23
 
16
24
 
17
25
  <nav id="fixed_menu" class="scroll-nav">
@@ -7,7 +7,7 @@
7
7
  }
8
8
 
9
9
  // Temporary fix until baseline is back to normal
10
- li {
10
+ li {
11
11
  list-style: none;
12
12
  }
13
13
 
@@ -63,7 +63,7 @@ li {
63
63
  }
64
64
 
65
65
  .rp { color: #DCDCCC; }
66
- .ooc {
66
+ .ooc {
67
67
  color: #A0A090;
68
68
  white-space: pre-wrap;
69
69
  font-family: monospace;
@@ -132,11 +132,30 @@ a.rp-tag {
132
132
  }
133
133
 
134
134
  &:hover {
135
-
135
+
136
136
  }
137
137
  }
138
138
 
139
139
  // Undo a styling for RP and arc titles
140
140
  .arc-title>a {
141
141
  color: inherit;
142
- }
142
+ }
143
+
144
+ /* Display for the tags on an RP page */
145
+ #tag-and-date {
146
+ display: flex;
147
+ flex-flow: row wrap;
148
+ justify-content: flex-end;
149
+
150
+ .tags {
151
+ flex: 1 1 auto;
152
+
153
+ .rp-tag {
154
+ margin-right: 4px;
155
+ }
156
+ }
157
+
158
+ .start-date {
159
+ flex: 0 0 auto;
160
+ }
161
+ }
@@ -57,10 +57,10 @@ $on-laptop: 800px;
57
57
 
58
58
  // Import partials from `sass_dir` (defaults to `_sass`)
59
59
  @import
60
- "custom-vars",
61
- "base",
62
- "layout",
63
- "syntax-highlighting",
64
- "rp",
65
- "custom-rules"
60
+ "custom-vars",
61
+ "base",
62
+ "layout",
63
+ "syntax-highlighting",
64
+ "rp",
65
+ "custom-rules"
66
66
  ;
data/CHANGELOG.md CHANGED
@@ -2,6 +2,28 @@
2
2
  All notable changes to this project will be documented in this file.
3
3
  This project adheres to [Semantic Versioning](http://semver.org/).
4
4
 
5
+ ## [0.3.0] - 2015-11-06
6
+ ### Added
7
+ - Tags are displayed underneath the title of an RP on its page (requires theme update) ([#37])
8
+ - Tag implications and tag aliases! ([#12], [#36])
9
+ - Added sample `tag_implications` and `tag_aliases` settings to the default config file
10
+ - A test RP for tag implication and aliasing.
11
+ - `Tag.[]` method for converting an array of strings into Tags, inspired by `Hash`
12
+ - Logs the total number of tag pages generated.
13
+ - Logs the total number of RPs converted after processing them.
14
+
15
+
16
+ ### Changed
17
+ - Calendar icon instead of the word "Started" for start dates (requires theme update)
18
+ - `Tag#to_s` returns character tags prefixed with `"char:"`. Use `#name` to get the raw name.
19
+ - Cleaned up the tests for `RpLogGenerator` a lot.
20
+ - Logging each individual conversion is now debug level output and not info.
21
+ - Test RPs now use the `.rp` extension instead of `.md`. This keeps them from being run through the Markdown converter, which saves time!
22
+
23
+ ### Fixed
24
+ - Liquid rendering is disabled for RP logs. ([#46])
25
+ - `RpLogs::Page` can be tested on its own, now that it requires `Forwardable`.
26
+
5
27
  ## [0.2.1] - 2015-10-26
6
28
  ### Fixed
7
29
  - Lines whose contents are completely whitespace are parsed correctly ([#40])
@@ -44,6 +66,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
44
66
  - Set required Ruby version to `~> 2.1` ([#32])
45
67
 
46
68
 
69
+ [0.3.0]: https://github.com/xiagu/jekyll-rp_logs/compare/v0.2.1...v0.3.0
47
70
  [0.2.1]: https://github.com/xiagu/jekyll-rp_logs/compare/v0.2.0...v0.2.1
48
71
  [0.2.0]: https://github.com/xiagu/jekyll-rp_logs/compare/v0.1.6...v0.2.0
49
72
 
@@ -59,3 +82,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
59
82
  [#7]: https://github.com/xiagu/jekyll-rp_logs/issues/7
60
83
  [#4]: https://github.com/xiagu/jekyll-rp_logs/issues/4
61
84
  [#40]: https://github.com/xiagu/jekyll-rp_logs/issues/40
85
+ [#46]: https://github.com/xiagu/jekyll-rp_logs/issues/46
86
+ [#12]: https://github.com/xiagu/jekyll-rp_logs/issues/12
87
+ [#36]: https://github.com/xiagu/jekyll-rp_logs/issues/36
88
+ [#37]: https://github.com/xiagu/jekyll-rp_logs/issues/37
data/README.md CHANGED
@@ -17,6 +17,7 @@ The result of building all the test files can be seen here. http://andrew.rs/pro
17
17
  * Supports multiple formats per file, for those times where you switched IRC clients in the middle of something. Or moved from IRC to Skype, or vice versa.
18
18
  * Infers characters involved in each RP by the nicks speaking
19
19
  * Generates a static site that can be hosted anywhere, without needing to run anything more than a web server
20
+ * Tagging and a tag implication/alias system
20
21
 
21
22
  ## Installation
22
23
 
@@ -91,6 +92,7 @@ These are all optional (they have default values, configurable in `_config.yml`)
91
92
  * `format` - YAML list - What format(s) the logs are in, e.g., `[weechat]`
92
93
  * `rp_tags` - comma separated list - A list of tags that describe the contents, such as characters involved or events that occur.
93
94
  * `start_date` - Any valid YAML date, such as `YYYY-MM-DD`. - Displayed on the RP page, and used to sort in the index. If left blank, will be inferred from the first timestamp.
95
+ * `time_line` - Used to change the order an RP in an Arc is stored in while keeping the displayed start_date correct. Useful if story RPs were done out of order. Must be a valid YAML date, such as `YYYY-MM-DD`. -
94
96
 
95
97
  There are also some more options you can toggle. Some are needed for giving the parser more information about oddities in posts, so that it can merge split posts correctly.
96
98
 
@@ -127,6 +129,24 @@ Optionally, add the `--watch` flag to automatically rebuild if you add more logs
127
129
 
128
130
  **Warning again:** Destination folders are cleaned whenever Jekyll builds the site. Seriously, don't tell Jekyll to output to a directory that has anything useful in it.
129
131
 
132
+ ### Tag implications and aliases
133
+ This feature allows you to set up implications, where something tagged with one tag will automatically be tagged with other tags, in a list. The implied tags need to be a list, even if there's only one. Example syntax:
134
+
135
+ ```yaml
136
+ tag_implications:
137
+ apple: [fruit]
138
+ lorem ipsum: [dolor, sit amet]
139
+ ```
140
+
141
+ Tag aliases function just like implications, except the original tag is removed. So they effectively convert one tag into another tag. Or tags. Example syntax:
142
+
143
+ ```yaml
144
+ tag_aliases:
145
+ # Keys with a : in them are fine; only a `: ` is parsed as the separator
146
+ char:John_Smith: ["char:John"] # Needs the quotes because of the :
147
+ etaoin: [etaoin shrdlu]
148
+ ```
149
+
130
150
  ## Development
131
151
 
132
152
  After checking out the repo, run `bin/setup` to install dependencies.
@@ -35,6 +35,7 @@ module Jekyll
35
35
 
36
36
  RpLogGenerator.extract_settings(config)
37
37
  LogLine.extract_settings(config)
38
+ Page.extract_settings(config)
38
39
 
39
40
  Jekyll.logger.info "Loaded jekyll-rp_logs #{RpLogs::VERSION}"
40
41
  end
@@ -44,6 +45,7 @@ module Jekyll
44
45
 
45
46
  main_index, arc_index = extract_indexes(site)
46
47
 
48
+ disable_liquid_rendering(site)
47
49
  # Pull out all the pages that are error-free
48
50
  rp_pages = extract_valid_rps(site)
49
51
 
@@ -71,6 +73,19 @@ module Jekyll
71
73
  site.data["menu_pages"] = [main_index, arc_index]
72
74
  end
73
75
 
76
+ ##
77
+ # Redefine the #render_with_liquid? method for every RP Document. This
78
+ # speeds up the rendering process a little, and also avoids Liquid
79
+ # throwing a fit if someone typed {{ in the log.
80
+ def disable_liquid_rendering(site)
81
+ site.collections[rp_key].docs.each do |doc|
82
+ # https://github.com/jekyll/jekyll/blob/6e8fd8cb50eab4dab527eaaa0b23d08593b9972b/lib/jekyll/document.rb#L150
83
+ def doc.render_with_liquid?
84
+ false
85
+ end
86
+ end
87
+ end
88
+
74
89
  ##
75
90
  # Returns a list of RpLogs::Page objects that are error-free.
76
91
  def extract_valid_rps(site)
@@ -107,7 +122,7 @@ module Jekyll
107
122
  no_arc_rps << page
108
123
  end
109
124
 
110
- Jekyll.logger.info "Converted #{page.basename}"
125
+ Jekyll.logger.debug "Converted #{page.basename}"
111
126
  rescue
112
127
  # Catch all for any other exception encountered when parsing a page
113
128
  skip_page(site, page, "Error parsing #{page.basename}: #{$ERROR_INFO.inspect}")
@@ -116,6 +131,8 @@ module Jekyll
116
131
  end
117
132
  end
118
133
 
134
+ Jekyll.logger.info "#{site.collections[rp_key].docs.size} RPs converted."
135
+
119
136
  arcs.each_key { |key| sort_chronologically! arcs[key].rps }
120
137
  combined_rps = no_arc_rps.map { |x| ["rp", x] } + arcs.values.map { |x| ["arc", x] }
121
138
  combined_rps.sort_by! { |type, x|
@@ -137,7 +154,7 @@ module Jekyll
137
154
  pages.each do |p|
138
155
  if p[:time_line] && !p[:time_line].is_a?(Date)
139
156
  Jekyll.logger.error "Malformed time_line #{p[:time_line]} in file #{p.path}"
140
- fail "Malformed time_line date"
157
+ fail "Malformed time_line date, must be in the format YYYY-MM-DD"
141
158
  end
142
159
  end
143
160
  # Sort pages by time_line if present or start_date otherwise
@@ -166,6 +183,7 @@ module Jekyll
166
183
  merge_lines! compiled_lines
167
184
  stats = extract_stats compiled_lines
168
185
 
186
+ # A decent amount of this could be moved into Page
169
187
  split_output = compiled_lines.map(&:output)
170
188
  page.content = split_output.join("\n")
171
189
 
@@ -173,6 +191,7 @@ module Jekyll
173
191
  # Turn the nicks into characters
174
192
  nick_tags = stats[:nicks].map! { |n| Tag.new("char:" + n) }
175
193
  page[:rp_tags] = (nick_tags.merge page[:rp_tags]).to_a.sort
194
+ page.update_tags
176
195
  end
177
196
 
178
197
  page[:end_date] = stats[:end_date]
@@ -1,3 +1,7 @@
1
+ require "forwardable"
2
+ require_relative "rp_tags"
3
+ require_relative "rp_tag_implication_handler"
4
+
1
5
  module Jekyll
2
6
  module RpLogs
3
7
  class Page
@@ -7,11 +11,19 @@ module Jekyll
7
11
  # Jekyll::Page object
8
12
  attr_reader :page
9
13
 
14
+ class << self
15
+ attr_reader :tag_implication_handler
16
+
17
+ def extract_settings(config)
18
+ @tag_implication_handler = TagImplicationHandler.new(config)
19
+ end
20
+ end
21
+
10
22
  def initialize(page)
11
23
  @page = page
12
24
 
13
25
  # If the tags exist, try to convert them to a list of Tag objects
14
- self[:rp_tags] &&= self[:rp_tags].split(",").map { |t| Tag.new t }
26
+ self[:rp_tags] = Tag[self[:rp_tags].split(",")] if self[:rp_tags].is_a?(String)
15
27
  end
16
28
 
17
29
  ##
@@ -25,6 +37,14 @@ module Jekyll
25
37
  @page.data[key.to_s] = value
26
38
  end
27
39
 
40
+ def tags
41
+ self[:rp_tags]
42
+ end
43
+
44
+ def tag_strings
45
+ tags.map(&:to_s)
46
+ end
47
+
28
48
  ##
29
49
  # Check this page for errors, using the provided list of supported parse
30
50
  # formats
@@ -58,6 +78,13 @@ module Jekyll
58
78
  merge_text_into_rp: self[:merge_text_into_rp],
59
79
  splits_by_character: self[:splits_by_character] }
60
80
  end
81
+
82
+ ##
83
+ # Updates tags with implications and aliases.
84
+ def update_tags
85
+ self[:rp_tags] = Tag[self.class.tag_implication_handler.update_tags(tag_strings.to_set)]
86
+ self
87
+ end
61
88
  end
62
89
  end
63
90
  end
@@ -0,0 +1,129 @@
1
+ module Jekyll
2
+ module RpLogs
3
+ class TagImplicationHandler
4
+ class TagImplicationError < StandardError
5
+ end
6
+
7
+ attr_reader :tag_aliases, :tag_implications
8
+
9
+ ##
10
+ # Extract global settings from the config file.
11
+ def initialize(config)
12
+ @tag_implications = (config["tag_implications"] || {}).freeze
13
+ @tag_aliases = (config["tag_aliases"] || {}).freeze
14
+ validate_tag_rules
15
+ end
16
+
17
+ def update_tags(tag_set, verbose: false)
18
+ removed_tags = Set.new
19
+ loop do
20
+ previous_tags = tag_set.clone
21
+ cyclical = catch :cyclical_tags do
22
+ implicate_tags(tag_set, removed_tags, verbose)
23
+ alias_tags(tag_set, removed_tags)
24
+ false
25
+ end
26
+ if cyclical
27
+ fail_with "The tag #{cyclical[1]} (from #{cyclical[0]} => #{cyclical[1]}) has been removed before. There is a cycle in the tag aliases and implications."
28
+ end
29
+ # Break when there is no change in tags.
30
+ return tag_set if tag_set == previous_tags
31
+ end
32
+ end
33
+
34
+ private
35
+
36
+ ##
37
+ # Looks for various loops and other problems in the tag aliases and
38
+ # implications.
39
+ def validate_tag_rules
40
+ # Check for aliases and implications from the same tag
41
+ dupe = @tag_implications.keys.find { |k| @tag_aliases.key? k }
42
+ if dupe
43
+ fail_with "Tag \"#{dupe}\" is both aliased and implied from. Imply from the alias instead."
44
+ end
45
+
46
+ error_for_aliases_that_should_be_implications
47
+
48
+ # Check for loooops.
49
+ starter_tags = @tag_implications.keys.to_set.merge @tag_aliases.keys
50
+ update_tags(starter_tags, verbose: true)
51
+ end
52
+
53
+ ##
54
+ # Iteratively adds all implied tags until no more can be implied.
55
+ # This method won't loop infinitely because there are only a finite
56
+ # number of tag implications defined, and implications only add tags.
57
+ # They can't remove tags.
58
+ def implicate_tags(tag_set, removed_tags, verbose)
59
+ tags_to_check = tag_set
60
+ loop do
61
+ # Because we use this set again as the tags to check we don't want
62
+ # to clear it.
63
+ to_add = Set.new
64
+ tags_to_check.each do |tag|
65
+ imply = @tag_implications.fetch(tag, [])
66
+
67
+ removed, imply = imply.partition { |t| removed_tags.include? t }
68
+ # It's okay if we want to imply a removed tag. Maybe?
69
+ if verbose && !removed.empty?
70
+ string = removed.size == 1 ? "is an aliased tag" : "are aliased tags"
71
+ Jekyll.logger.warn "#{tag} implies #{removed}, which #{string}. Consider implying the alised tag directly."
72
+ end
73
+
74
+ to_add.merge imply
75
+ end
76
+
77
+ break if to_add.empty?
78
+ tag_set.merge to_add
79
+ tags_to_check = to_add
80
+ end
81
+ end
82
+
83
+ ##
84
+ # Iteratively apply tag aliases until no more can be applied
85
+ def alias_tags(tag_set, removed_tags)
86
+ tags_to_check = tag_set
87
+ loop do
88
+ to_add = Set.new
89
+ tags_to_check.each do |tag|
90
+ next unless @tag_aliases.key? tag
91
+
92
+ aliased = @tag_aliases[tag]
93
+ aliased.each do |t|
94
+ next unless removed_tags.include? t
95
+ throw(:cyclical_tags, [tag, t])
96
+ end
97
+
98
+ # if it's already in the set, something weird happened
99
+ removed_tags << tag
100
+ tag_set.delete tag
101
+ to_add.merge aliased
102
+ end
103
+
104
+ break if to_add.empty?
105
+ tag_set.merge to_add
106
+ tags_to_check = to_add
107
+ end
108
+ end
109
+
110
+ ##
111
+ # Warn for aliases that include the original tag. They're equivalent to
112
+ # implications.
113
+ def error_for_aliases_that_should_be_implications
114
+ error_messages = []
115
+ @tag_aliases.each_pair do |k, v|
116
+ if v.include? k
117
+ error_messages << "Alias #{k} => #{v} is equivalent to an implication. #{k} will not be removed."
118
+ end
119
+ end
120
+ fail_with error_messages.join("\n") unless error_messages.empty?
121
+ end
122
+
123
+ def fail_with(message)
124
+ Jekyll.logger.error message
125
+ fail TagImplicationError, message
126
+ end
127
+ end
128
+ end
129
+ end
@@ -17,7 +17,7 @@ module Jekyll
17
17
  # Sort tagged RPs by their start date
18
18
  data["pages"] = pages.sort_by { |p| p.data["start_date"] }
19
19
  tag_title_prefix = site.config["rp_tag_title_prefix"] || "Tag: "
20
- data["title"] = "#{tag_title_prefix}#{tag}"
20
+ data["title"] = "#{tag_title_prefix}#{tag.name}"
21
21
  end
22
22
  end
23
23
 
@@ -39,6 +39,7 @@ module Jekyll
39
39
  tags.each_pair { |tag, pages|
40
40
  site.pages << TagIndex.new(site, site.source, File.join(dir, tag.dir), tag, pages)
41
41
  }
42
+ Jekyll.logger.info "#{tags.size} tag pages generated."
42
43
  end
43
44
 
44
45
  # Returns a hash of tags => [pages with tag]
@@ -2,37 +2,41 @@
2
2
 
3
3
  module Jekyll
4
4
  module RpLogs
5
-
6
- TAG_NAME_MAP = {
7
- "#" => "sharp",
8
- "/" => "slash",
9
- "\\" => "backslash",
10
- " " => "_"
11
- }
12
-
13
5
  # Holds tag information
14
6
  class Tag
15
-
16
- attr_accessor :dir, :name, :type
17
-
18
- TYPES = [:meta, :character, :general]
19
- CHAR_FLAG = /char:(.*)/
7
+ TYPES = [:meta, :character, :general].freeze
8
+ CHAR_FLAG = /^char:(?<char_name>.*)/
20
9
  META_TAGS = /(safe|questionable|explicit|canon|noncanon|complete|incomplete)/
21
10
 
11
+ TAG_NAME_MAP = {
12
+ "#" => "sharp",
13
+ "/" => "slash",
14
+ "\\" => "backslash",
15
+ " " => "_"
16
+ }.freeze
17
+
22
18
  TYPE_CLASSES = {
23
- :character => ['rp-tag-character'],
24
- :meta => ['rp-tag-meta'],
25
- :general => []
26
- }
19
+ character: ["rp-tag-character"],
20
+ meta: ["rp-tag-meta"],
21
+ general: []
22
+ }.freeze
23
+
24
+ attr_accessor :dir, :name, :type
25
+
26
+ ##
27
+ # Inspired by Hash, convert a list of strings to a list of Tags.
28
+ def self.[](*args)
29
+ args[0].map { |t| Tag.new t }
30
+ end
27
31
 
28
32
  def initialize(name)
29
33
  # inspect types
30
- name.strip!
31
- if (name =~ CHAR_FLAG) == 0 then
32
- @name = $1
34
+ my_name = name.strip
35
+ if CHAR_FLAG =~ my_name
36
+ @name = $LAST_MATCH_INFO[:char_name]
33
37
  @type = :character
34
38
  else
35
- @name = name.downcase
39
+ @name = my_name.downcase
36
40
  @type = @name =~ META_TAGS ? :meta : :general
37
41
  end
38
42
 
@@ -40,25 +44,29 @@ module Jekyll
40
44
  end
41
45
 
42
46
  def to_s
43
- self.name
47
+ if type == :character
48
+ "char:#{name}"
49
+ else
50
+ name
51
+ end
44
52
  end
45
53
 
46
- def eql?(tag)
47
- self.class.equal?(tag.class) && (self.name == tag.name && self.type == tag.type)
54
+ def eql?(other)
55
+ self.class.equal?(other.class) && (name == other.name && type == other.type)
48
56
  end
49
57
 
50
58
  def hash
51
- self.name.hash
59
+ name.hash
52
60
  end
53
61
 
54
62
  def <=>(o)
55
- if self.class == o.class && self.type == o.type
56
- self.name <=> o.name
57
- elsif self.type == :character
63
+ if self.class == o.class && type == o.type
64
+ name <=> o.name
65
+ elsif type == :character
58
66
  -1
59
67
  elsif o.type == :character
60
- 1
61
- elsif self.type == :meta
68
+ 1
69
+ elsif type == :meta
62
70
  -1
63
71
  elsif o.type == :meta
64
72
  1
@@ -73,12 +81,11 @@ module Jekyll
73
81
 
74
82
  def to_liquid
75
83
  # Liquid wants a hash, not an object.
76
-
77
- { "name" => @name, "dir" => @dir, "classes" => self.classes }
84
+ { "name" => @name, "dir" => @dir, "classes" => classes }
78
85
  end
79
86
 
80
- def classes
81
- TYPE_CLASSES[@type].join ' '
87
+ def classes
88
+ TYPE_CLASSES[@type].join " "
82
89
  end
83
90
 
84
91
  private
@@ -88,11 +95,11 @@ module Jekyll
88
95
  def name_to_dir(name)
89
96
  s = ""
90
97
  name.each_char do |c|
91
- if (c =~ /[-A-Za-z0-9_|\[\]]/) != nil
98
+ if c =~ /[-A-Za-z0-9_|\[\]]/
92
99
  s += c
93
100
  else
94
101
  c2 = TAG_NAME_MAP[c]
95
- if not c2
102
+ unless c2
96
103
  msg = "Bad character '#{c}' in tag '#{name}'"
97
104
  puts("*** #{msg}")
98
105
  raise Exception.new(msg)
@@ -1,5 +1,5 @@
1
1
  module Jekyll
2
2
  module RpLogs
3
- VERSION = "0.2.1"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-rp_logs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - anrodger
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-10-26 00:00:00.000000000 Z
11
+ date: 2015-11-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -144,6 +144,7 @@ files:
144
144
  - lib/jekyll/rp_logs/rp_logline.rb
145
145
  - lib/jekyll/rp_logs/rp_page.rb
146
146
  - lib/jekyll/rp_logs/rp_parser.rb
147
+ - lib/jekyll/rp_logs/rp_tag_implication_handler.rb
147
148
  - lib/jekyll/rp_logs/rp_tag_index.rb
148
149
  - lib/jekyll/rp_logs/rp_tags.rb
149
150
  - lib/jekyll/rp_logs/rp_tasks.rb