jekyll_github_sample 0.2.0 → 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: dbe426f3a4ba56ae33eea0b0d06f3168cc6a1847
4
- data.tar.gz: 0cf73c713e0123584116c20c51cac8a0c63b9789
3
+ metadata.gz: bc04ac952632c2231479dc871d6b2abcfebf96ee
4
+ data.tar.gz: e71916874ca33eea7bc973099ed2eedd4a610e2f
5
5
  SHA512:
6
- metadata.gz: 3d6c630ffc6c0ddf6118cec63f96a0e66a93921e9d025250297f29f4aff4d28c6eb3a423667d28abcb01a12f77475dbd062625eeccd382b1b933ea8d568a3a93
7
- data.tar.gz: 58df351402012f1550b74c2c65fe88c0781eee8f1b780f5c0bd58d3b2239f9f670b5d9fa80b587935e5a324f7d22a87e31004dd579bb95cadc3e925ad17c946c
6
+ metadata.gz: 7f53146882fc4603a272b1b93436dc9cfbadfe3ccad3d134a1c532740852f2b3f7c920b09b4c8bb8de84e2fdd134b9174777f9c1939072b5d16b990c4e842834
7
+ data.tar.gz: 0c02616d019a1a15c321ce6e1d527a8b3585c2e02a569f46d13be85bca93dbc64d3d8d6b496ff238bfa45876d925c5a8dc73b77e7401fbef1b0b5c0a192e383e
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- jekyll_github_sample (0.2.0)
4
+ jekyll_github_sample (0.3.0)
5
5
  activesupport (~> 4.0)
6
6
  jekyll (~> 3.0)
7
7
 
@@ -76,4 +76,4 @@ DEPENDENCIES
76
76
  rspec
77
77
 
78
78
  BUNDLED WITH
79
- 1.13.6
79
+ 1.13.7
data/README.md CHANGED
@@ -5,7 +5,7 @@ Two Jekyll Liquid tags to display a code sample from a file in a public Github r
5
5
 
6
6
  # Install
7
7
 
8
- - First add the gem to your `Gemfile`
8
+ - First add the gem to your `Gemfile`
9
9
  ```
10
10
  gem 'jekyll_github_sample'
11
11
  ```
@@ -30,6 +30,16 @@ A [write up](https://bwillis.github.io/2014/05/28/include-github-repo-code-in-je
30
30
  * START_LINE_NUMBER - (optional) number that is the first line to include (0 based)
31
31
  * END_LINE_NUMBER - (optional) number that is the last line to include, if excluded will read to end of file
32
32
 
33
+ One can also specify the lines to include based on markings in the file itself.
34
+ This is done by invoking
35
+
36
+ ```
37
+ {% github_sample URL_WITH_USERNAME_REPO_AND_FILE tag:TAG_NAME %}
38
+ ```
39
+
40
+ and placing the strings `[START TAG_NAME]` and `[END TAG_NAME]` anywhere in the lines immediately before and after the content you wish to include.
41
+
42
+
33
43
  # github_sample_ref Usage
34
44
  ```
35
45
  {% github_sample_ref URL_WITH_USERNAME_REPO_AND_FILE %}
@@ -53,6 +63,7 @@ This is how you would display, reference and highlight code in your Jekyll post.
53
63
  Thanks to all those who have helped make this really awesome:
54
64
 
55
65
  * [heedfull](https://github.com/heedfull)
66
+ * [robertwb](https://github.com/robertwb)
56
67
 
57
68
  # License
58
69
  Jekyll Github Sample is released under the MIT license: www.opensource.org/licenses/MIT
@@ -11,7 +11,6 @@ module JekyllGithubSample
11
11
  def initialize(tag_name, params, tokens)
12
12
  github_file_path, @line_start, @line_end = params.split
13
13
  @github_file = FileHelper.new(github_file_path)
14
- @line_start, @line_end = determine_line_numbers(@line_start, @line_end)
15
14
  super
16
15
  end
17
16
 
@@ -19,7 +18,12 @@ module JekyllGithubSample
19
18
  all_lines = cache.fetch(@github_file.raw_uri) do
20
19
  open(@github_file.raw_uri).readlines
21
20
  end
22
- lines = all_lines[@line_start..@line_end]
21
+ if @line_start.respond_to?(:match) and tag_match = @line_start.match(/^tag:(.*)/)
22
+ lines = extract_tagged_lines(all_lines, tag_match[1])
23
+ else
24
+ @line_start, @line_ends = determine_line_numbers(@line_start, @line_end)
25
+ lines = all_lines[@line_start..@line_end]
26
+ end
23
27
  lines = remove_common_indentation(lines)
24
28
  lines.join
25
29
  end
@@ -18,5 +18,24 @@ module JekyllGithubSample
18
18
  line.length == 1 ? line : line[leading_spaces.min..-1]
19
19
  end
20
20
  end
21
+
22
+ def extract_tagged_lines(lines, tag)
23
+ start_tag = "[START #{tag}]"
24
+ end_tag = "[END #{tag}]"
25
+ tagged_lines = []
26
+ in_tagged_content = false
27
+ lines.each do |line|
28
+ if in_tagged_content
29
+ if line.include? end_tag
30
+ in_tagged_content = false
31
+ else
32
+ tagged_lines << line
33
+ end
34
+ else
35
+ in_tagged_content = line.include? start_tag
36
+ end
37
+ end
38
+ tagged_lines
39
+ end
21
40
  end
22
41
  end
@@ -1,3 +1,3 @@
1
1
  module JekyllGithubSample
2
- VERSION = '0.2.0'
2
+ VERSION = '0.3.0'
3
3
  end
@@ -33,4 +33,24 @@ describe JekyllGithubSample::TextUtils do
33
33
  end
34
34
  end
35
35
 
36
- end
36
+ context '#extract_tagged_lines' do
37
+ let(:lines) { [
38
+ 'header',
39
+ '[START tag]',
40
+ 'content 1',
41
+ 'content 2',
42
+ '[END tag]',
43
+ 'footer 1',
44
+ 'footer 2'
45
+ ] }
46
+ subject { text_utils.extract_tagged_lines(lines, 'tag') }
47
+
48
+ it 'extracts content' do
49
+ should =~ [
50
+ 'content 1',
51
+ 'content 2'
52
+ ]
53
+ end
54
+ end
55
+
56
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll_github_sample
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Willis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-13 00:00:00.000000000 Z
11
+ date: 2017-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -122,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
122
122
  version: '0'
123
123
  requirements: []
124
124
  rubyforge_project:
125
- rubygems_version: 2.5.1
125
+ rubygems_version: 2.5.2
126
126
  signing_key:
127
127
  specification_version: 4
128
128
  summary: Include a sample of a Github repo file.