git-trend 0.2.3 → 1.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6d878ee2f288938f7c79f7a04ae08b828d765a4d
4
- data.tar.gz: 78d2345bf5592f1ee1689120832b75ed3511a657
3
+ metadata.gz: 597638b20103fa0f93fe64b4715f9b0bc1a36c4a
4
+ data.tar.gz: 3b194423f73e884bdbd0692ad5e18176a733f3de
5
5
  SHA512:
6
- metadata.gz: bb2272d6a3fbd55e91b7a596603559c6ee78aac04021c23ddb9d113708227ac77c674a5e86178463f1f57373d0d84110066c16037614ffe8f16832580994ad90
7
- data.tar.gz: 0b0b2e3f8895f0672d0b709f2a3c0a014d3c356697bf964547e9a1eeeffa8c551b57dd452f15f1f03b3b081769623c28d2c92e3a609be10fe7680eda85e3d138
6
+ metadata.gz: a9f3622dcbddfb717aebf4c5e046639b80ff73772145c91ec9757c24b900aa52a2f086ddff014dafa470c7869bbb449c8eda91ebdc92a97c3d482bcd1019a575
7
+ data.tar.gz: 2a1913deb989b7919ffc839696c6648571f1085e73c30cbe6ca1fcc54719cc74e36b231630d464d78e41c313050f9c128ae07715c62231ad97c398d14a240f91
data/.gitignore CHANGED
@@ -13,6 +13,7 @@ lib/bundler/man
13
13
  pkg
14
14
  rdoc
15
15
  spec/reports
16
+ spec/examples.txt
16
17
  test/tmp
17
18
  test/version_tmp
18
19
  tmp
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## v1.0.0 (Wed Feb 12 2016)
2
+ - Add module methods as working in ruby scripts [f93011b]
3
+
4
+ - Add variations of since option [f927ba7]
5
+ variations: d, day, w, week, m, month
6
+
1
7
  ## v0.2.2 (Fri Jan 29 2016)
2
8
  - Fix missing languages
3
9
 
data/README.md CHANGED
@@ -7,21 +7,73 @@
7
7
 
8
8
  # git-trend
9
9
 
10
- git-trend is a command line utility to show [Trending repositories on GitHub](https://github.com/trending).
10
+ `git-trend` is a gem that fetches [Trending repositories on GitHub](https://github.com/trending).
11
+ And this also work as a command line utility.
11
12
 
12
13
  ## Requirements
13
14
 
14
- Ruby versions is earlier than 2.0.
15
+ Ruby versions is 2.0 or later.
15
16
 
16
17
  ## Installation
18
+ Add this line to your application's Gemfile:
19
+ gem 'git-trend'
17
20
 
21
+ And then execute:
22
+ $bundle
23
+
24
+ Or install it yourself as:
18
25
  $ gem install git-trend
19
26
 
20
- ## Usage
27
+ ## Usage Of a gem
28
+
29
+ Require it if you haven't:
30
+
31
+ require 'git-trend'
32
+
33
+ ### Fetch trending
34
+
35
+ repos = GitTrend.get
36
+ repos.each do |r|
37
+ puts "#{r.name} (#{r.star_count} stargazers)"
38
+ puts "--- #{r.description}\n\n"
39
+ end
40
+
41
+ # =>
42
+ # jayphelps/git-blame-someone-else (625 stargazers)
43
+ # --- Blame someone else for your bad code.
44
+ #
45
+ # FreeCodeCamp/FreeCodeCamp (574 stargazers)
46
+ # --- The http://FreeCodeCamp.com open source codebase and curriculum. Learn to # code and help nonprofits.
47
+ #
48
+ # p-e-w/maybe (519 stargazers)
49
+ # --- See what a program does before deciding whether you really want it to happen.
50
+ # ...
51
+
52
+ ### Use language and since options
53
+
54
+ # language
55
+ GitTrend.get('ruby')
56
+ GitTrend.get(:ruby)
57
+
58
+ # since
59
+ GitTrend.get(since: :weekly)
60
+ GitTrend.get(since: :week)
61
+ GitTrend.get(since: :w)
62
+
63
+ # language and since
64
+ GitTrend.get('ruby', 'weekly')
65
+ GitTrend.get(:ruby, :weekly)
66
+ GitTrend.get(language: :ruby, since: :weekly)
67
+
68
+ ### Show enable languages
69
+
70
+ GitTrend.languages
71
+
72
+ ## Usage Of a command line tool
21
73
 
22
74
  Use the git-trend as follows:
23
75
 
24
- ### daily trending
76
+ ### Fetch daily trending
25
77
 
26
78
  git trend
27
79
 
@@ -59,7 +111,7 @@ No. Name Lang Star Description
59
111
 
60
112
  ```
61
113
 
62
- ### daily trending without description
114
+ ### Fetch daily trending without description
63
115
 
64
116
  git trend --no-description
65
117
 
@@ -74,30 +126,11 @@ No. Name Lang Star
74
126
  3 FezVrasta/bootstrap-material-design CSS 387
75
127
  4 realm/realm-java Java 293
76
128
  5 Aerolab/midnight.js JavaScript 226
77
- 6 alebcay/awesome-shell 220
78
- 7 jonathanslenders/python-prompt-toolkit Python 215
79
- 8 willianjusten/awesome-svg 130
80
- 9 usablica/intro.js JavaScript 105
81
- 10 simoncozens/sile C++ 102
82
- 11 sferik/t Ruby 85
83
- 12 realm/realm-cocoa Objective-C 83
84
- 13 mubix/shellshocker-pocs 67
85
- 14 hannob/bashcheck Shell 60
86
- 15 angular/angular.js JavaScript 46
87
- 16 kenwheeler/slick JavaScript 57
88
- 17 Squirrel/Squirrel.Windows C 57
89
- 18 jshint/fixmyjs JavaScript 56
90
- 19 plivo/sharq-server Python 52
91
- 20 marmelab/ng-admin JavaScript 49
92
- 21 twbs/bootstrap CSS 38
93
- 22 CyberAgent/AMBTableViewController Objective-C 48
94
- 23 google/cadvisor Go 48
95
- 24 vladikoff/chromeos-apk JavaScript 46
96
- 25 nhanaswigs/htmljs JavaScript 47
129
+ ...
97
130
 
98
131
  ```
99
132
 
100
- ### daily trending by language
133
+ ### Fetch daily trending by language
101
134
 
102
135
  git trend -l
103
136
 
@@ -112,37 +145,19 @@ No. Name Lang Star Description
112
145
  3 Homebrew/homebrew Ruby 23 The missing package manager for OS X.
113
146
  4 ruby/ruby Ruby 12 The Ruby Programming Language
114
147
  5 discourse/discourse Ruby 10 A platform for community discussion. Free, open, simple.
115
- 6 diaspora/diaspora Ruby 12 Distributed and contextual social networking
116
- 7 elasticsearch/logstash Ruby 10 logstash - logs/event transport, processing, management, search.
117
- 8 mitchellh/vagrant Ruby 10 Vagrant is a tool for building and distributing development environments.
118
- 9 increments/qiita-rb Ruby 10 Qiita API v2 client library and CLI tool, written in Ruby
119
- 10 gitlabhq/gitlabhq Ruby 8 Open source software to collaborate on code. Follow us on twitter @gitlabhq
120
- 11 jekyll/jekyll Ruby 7 Jekyll is a blog-aware, static site generator in Ruby
121
- 12 bbatsov/ruby-style-guide Ruby 9 A community-driven Ruby coding style guide
122
- 13 capistrano/capistrano Ruby 7 Remote multi-server automation tool
123
- 14 intridea/grape Ruby 8 An opinionated micro-framework for creating REST-like APIs in Ruby.
124
- 15 CocoaPods/CocoaPods Ruby 6 The Objective-C library dependency manager.
125
- 16 thoughtbot/laptop Ruby 6 A shell script which turns your Linux or Mac OS X laptop into an awesome development machine.
126
- 17 amatsuda/database_rewinder Ruby 7 minimalist's tiny and ultra-fast database cleaner
127
- 18 voltrb/volt Ruby 7 A ruby web framework where your ruby runs on both server and client
128
- 19 Homebrew/linuxbrew Ruby 6 A fork of Homebrew for Linux
129
- 20 davidcelis/spec-me-maybe Ruby 7 Introduces the `maybe` syntax to RSpec.
130
- 21 peter-murach/tty Ruby 6 Toolbox for developing CLI clients.
131
- 22 plataformatec/devise Ruby 6 Flexible authentication solution for Rails with Warden.
132
- 23 fluent/fluentd Ruby 6 Fluentd data collector
133
- 24 caskroom/homebrew-cask Ruby 5 A CLI workflow for the administration of Mac applications distributed as binaries
134
- 25 cantino/huginn Ruby 5 Build agents that monitor and act on your behalf. Your agents are standing by!
135
-
148
+ ...
136
149
  ```
137
150
 
138
- ### weekly/monthly trending
151
+ ### Fetch weekly/monthly trending
139
152
 
140
153
  git trend -s weekly
154
+ git trend -s week
141
155
  git trend -s w
142
156
 
143
157
  or
144
158
 
145
159
  git trend -s monthly
160
+ git trend -s month
146
161
  git trend -s m
147
162
 
148
163
  e.g.:
@@ -156,30 +171,10 @@ No. Name Lang Star Description
156
171
  3 willianjusten/awesome-svg 1395 A curated list of SVG.
157
172
  4 Aerolab/midnight.js JavaScript 1351 A jQuery plugin to switch fixed headers on the fly
158
173
  5 alebcay/awesome-shell 743 A curated list of awesome command-line frameworks, toolkits, guides and gizmos. Inspired by awe...
159
- 6 jonathanslenders/python-prompt-toolkit Python 670 Library for building powerful interactive command lines in Python
160
- 7 vladikoff/chromeos-apk JavaScript 608 Run Android APKs in Chrome OS OR Chrome in OS X, Linux and Windows.
161
- 8 psaravan/JamsMusicPlayer Java 533 A free, powerful and elegant music player for Android.
162
- 9 reddit/reddit Python 553 the code that powers reddit.com
163
- 10 Alamofire/Alamofire Swift 559 Elegant HTTP Networking in Swift
164
- 11 vgvassilev/cling C++ 492 Cling is an interactive C++ interpreter, built on top of Clang and LLVM compiler infrastructure...
165
- 12 shu223/iOS8-Sampler Objective-C 476 Code examples for the new functions of iOS 8.
166
- 13 yahoo/gifshot JavaScript 487 JavaScript library that can create animated GIFs from media streams, videos, or images
167
- 14 kenwheeler/slick JavaScript 439 the last carousel you'll ever need
168
- 15 sferik/t Ruby 420 A command-line power tool for Twitter.
169
- 16 angular/angular.js JavaScript 325 HTML enhanced for web apps
170
- 17 mieko/sr-captcha CSS 387 Article describing how the technical means by which Silk Road 1's captcha was broken.
171
- 18 sofish/wechat.js JavaScript 360 微信相关的 js 操作:分享、网络、菜单
172
- 19 robertdavidgraham/masscan C 345 TCP port scanner, spews SYN packets asynchronously, scanning entire Internet in under 5 minutes...
173
- 20 realm/realm-java Java 348 Realm is a mobile database: a replacement for SQLite & ORMs
174
- 21 humhub/humhub PHP 331 HumHub - Open Source Social Network
175
- 22 twbs/bootstrap CSS 259 The most popular HTML, CSS, and JavaScript framework for developing responsive, mobile first pr...
176
- 23 mechio/takana CoffeeScript 341 Takana lets you see your SCSS and CSS style changes live, in the browser, as you type them
177
- 24 davidtheclark/scalable-css-reading-list 331 Collected dispatches from The Quest for Scalable CSS
178
- 25 addyosmani/timing.js JavaScript 335 Navigation Timing API measurement helpers
179
-
174
+ ...
180
175
  ```
181
176
 
182
- ### number of trending
177
+ ### Fetch number of trending
183
178
 
184
179
  git trend -n <number>
185
180
 
@@ -195,7 +190,7 @@ No. Name Lang Star Description
195
190
 
196
191
  ```
197
192
 
198
- ### show languages
193
+ ### Show enable languages
199
194
 
200
195
  git trend languages
201
196
 
@@ -211,9 +206,7 @@ alloy
211
206
  antlr
212
207
  apex
213
208
  applescript
214
- .
215
- .
216
- .
209
+ ...
217
210
  ```
218
211
 
219
212
  ## Tips
@@ -222,7 +215,7 @@ I use an alias command like below;
222
215
  alias trend='g trend -n 10 && g trend -l ruby -n 5 && g trend -l JavaScript -n 5 && g trend -l objective-c -n 5 && g trend -l swift -n 3 && g trend -l php -n 3'
223
216
  ```
224
217
 
225
- ## Implemantation of other language
218
+ ## Implementation of other language
226
219
 
227
220
  * [andygrunwald/go-trending: Go library for accessing trending repositories and developers at Github.](https://github.com/andygrunwald/go-trending)
228
221
 
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'git_trend'
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require 'irb'
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
File without changes
data/git-trend.gemspec CHANGED
@@ -28,7 +28,8 @@ Gem::Specification.new do |spec|
28
28
  spec.license = 'MIT'
29
29
 
30
30
  spec.files = `git ls-files -z`.split("\x0")
31
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
31
+ spec.bindir = 'exe'
32
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
32
33
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
33
34
  spec.require_paths = ['lib']
34
35
 
data/lib/git_trend.rb CHANGED
@@ -1,11 +1,36 @@
1
1
  require 'mb_string'
2
2
 
3
+ require 'git_trend/cli'
4
+ require 'git_trend/project'
5
+ require 'git_trend/scraper'
6
+ require 'git_trend/version'
7
+
3
8
  module GitTrend
4
9
  class ScrapeException < StandardError; end
5
10
 
6
- autoload :CLI, 'git_trend/cli'
7
- autoload :Project, 'git_trend/project'
8
- autoload :Rendering, 'git_trend/rendering'
9
- autoload :Scraper, 'git_trend/scraper'
10
- autoload :VERSION, 'git_trend/version'
11
+ # GitTrend.get
12
+ # GitTrend.get('ruby')
13
+ # GitTrend.get(:ruby)
14
+ #
15
+ # GitTrend.get(since: :weekly)
16
+ # GitTrend.get(since: :week)
17
+ # GitTrend.get(since: :w)
18
+ #
19
+ # GitTrend.get('ruby', 'weekly')
20
+ # GitTrend.get(:ruby, :weekly)
21
+ # GitTrend.get(language: :ruby, since: :weekly)
22
+ def self.get(*opts)
23
+ if opts[0].instance_of?(Hash)
24
+ hash = opts[0]
25
+ language = hash.key?(:language) ? hash[:language] : nil
26
+ since = hash.key?(:since) ? hash[:since] : nil
27
+ Scraper.new.get(language, since)
28
+ else
29
+ Scraper.new.get(*opts)
30
+ end
31
+ end
32
+
33
+ def self.languages
34
+ Scraper.new.languages
35
+ end
11
36
  end
data/lib/git_trend/cli.rb CHANGED
@@ -1,8 +1,9 @@
1
1
  require 'thor'
2
+ require 'git_trend/rendering'
2
3
 
3
4
  module GitTrend
4
5
  class CLI < Thor
5
- include GitTrend::Rendering
6
+ include Rendering
6
7
 
7
8
  map '-v' => :version,
8
9
  '--version' => :version
@@ -16,7 +17,7 @@ module GitTrend
16
17
 
17
18
  desc :list, "\033[32m(DEFAULT COMMAND)\e[0m List Trending repository on github [-l, -s, -d]"
18
19
  option :language, aliases: '-l', required: false, desc: 'Specify a language'
19
- option :since, aliases: '-s', required: false, desc: 'Enable: [daily, weekly, monthly]'
20
+ option :since, aliases: '-s', required: false, desc: 'Enable: [d, day, daily, w, week, weekly, m, month, monthly]'
20
21
  option :description, aliases: '-d', required: false, default: true, type: :boolean, desc: "\033[32m(DEFAULT OPTION)\e[0m Dislpay descriptions"
21
22
  option :number, aliases: '-n', required: false, type: :numeric, desc: 'Number of lines'
22
23
  option :help, aliases: '-h', required: false, type: :boolean
@@ -1,4 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
1
  require 'mechanize'
3
2
  require 'addressable/uri'
4
3
 
@@ -22,25 +21,33 @@ module GitTrend
22
21
  end
23
22
 
24
23
  def languages
25
- languages = []
26
24
  page = @agent.get(BASE_URL)
27
- page.search('.language-filter-list + .select-menu span.select-menu-item-text').each do |content|
28
- language = content.text
29
- languages << language if language
25
+ page.search('.language-filter-list + .select-menu span.select-menu-item-text').inject([]) do |languages, content|
26
+ languages << content.text if content.text
30
27
  end
31
- languages
32
28
  end
33
29
 
34
30
  private
35
31
 
36
32
  def generate_url_for_get(language, since)
37
33
  uri = Addressable::URI.parse(BASE_URL)
34
+ since = convert_url_param_since(since)
38
35
  if language || since
39
36
  uri.query_values = { l: language, since: since }.delete_if { |_k, v| v.nil? }
40
37
  end
41
38
  uri.to_s
42
39
  end
43
40
 
41
+ def convert_url_param_since(since)
42
+ return unless since
43
+ case since.to_sym
44
+ when :d, :day, :daily then 'daily'
45
+ when :w, :week, :weekly then 'weekly'
46
+ when :m, :month, :monthly then 'monthly'
47
+ else ''
48
+ end
49
+ end
50
+
44
51
  # Pattern 1: lang + stars
45
52
  # Ruby • 24 stars today • Built by
46
53
  # Pattern 2: only stars
@@ -1,3 +1,3 @@
1
1
  module GitTrend
2
- VERSION = '0.2.3'
2
+ VERSION = '1.0.0'
3
3
  end
@@ -1,27 +1,31 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
-
4
1
  include GitTrend
2
+ RSpec.describe GitTrend::CLI do
3
+ shared_examples 'since daily ranking' do |since|
4
+ it 'display daily ranking' do
5
+ expect { cli.invoke(:list, [], since: since, description: false) }.to output(dummy_result_without_description).to_stdout
6
+ end
7
+ end
5
8
 
6
- RSpec.shared_examples_for 'since daily ranking' do
7
- it 'display daily ranking' do
8
- expect { @cli.invoke(:list, [], since: since, description: false) }.to output(dummy_result_without_description).to_stdout
9
+ shared_examples 'since weekly ranking' do |since|
10
+ it 'display weekly ranking' do
11
+ expect { cli.invoke(:list, [], since: since, description: false) }.to output(dummy_weekly_result).to_stdout
12
+ end
9
13
  end
10
- end
11
14
 
12
- RSpec.describe GitTrend::CLI do
13
- describe '#list' do
14
- before do
15
- @cli = CLI.new
15
+ shared_examples 'since monthly ranking' do |since|
16
+ it 'display monthly ranking' do
17
+ expect { cli.invoke(:list, [], since: since, description: false) }.to output(dummy_monthly_result).to_stdout
16
18
  end
19
+ end
20
+
21
+ describe '#list' do
22
+ let(:cli) { CLI.new }
17
23
 
18
24
  describe 'with -n option' do
19
25
  context 'with 3' do
20
- before do
21
- stub_request_get('trending')
22
- end
26
+ before { stub_request_get('trending') }
23
27
  let(:number) { 3 }
24
- it 'display daily ranking top 3' do
28
+ it 'display top 3 daily ranking' do
25
29
  res = <<-'EOS'.unindent
26
30
  |No. Name Lang Star
27
31
  |--- ---------------------------------------- ---------- ------
@@ -30,26 +34,22 @@ RSpec.describe GitTrend::CLI do
30
34
  | 3 FreeCodeCamp/FreeCodeCamp JavaScript 614
31
35
 
32
36
  EOS
33
- expect { @cli.invoke(:list, [], number: number, description: false) }.to output(res).to_stdout
37
+ expect { cli.invoke(:list, [], number: number, description: false) }.to output(res).to_stdout
34
38
  end
35
39
  end
36
40
 
37
41
  context 'with over 25' do
38
- before do
39
- stub_request_get('trending')
40
- end
42
+ before { stub_request_get('trending') }
41
43
  let(:number) { 26 }
42
44
  it 'display daily ranking' do
43
- expect { @cli.invoke(:list, [], number: number, description: false) }.to output(dummy_result_without_description).to_stdout
45
+ expect { cli.invoke(:list, [], number: number, description: false) }.to output(dummy_result_without_description).to_stdout
44
46
  end
45
47
  end
46
48
  end
47
49
 
48
50
  describe 'with -l option' do
49
51
  context 'with ruby' do
50
- before do
51
- stub_request_get("trending?l=#{language}")
52
- end
52
+ before { stub_request_get("trending?l=#{language}") }
53
53
  let(:language) { 'ruby' }
54
54
 
55
55
  it 'display daily ranking by language' do
@@ -83,14 +83,12 @@ RSpec.describe GitTrend::CLI do
83
83
  | 25 brandonhilkert/sucker_punch Ruby 7
84
84
 
85
85
  EOS
86
- expect { @cli.invoke(:list, [], language: language, description: false) }.to output(res).to_stdout
86
+ expect { cli.invoke(:list, [], language: language, description: false) }.to output(res).to_stdout
87
87
  end
88
88
  end
89
89
 
90
90
  context 'with objective-c++ (including + sign)' do
91
- before do
92
- stub_request_get('trending?l=objective-c%2B%2B')
93
- end
91
+ before { stub_request_get('trending?l=objective-c%2B%2B') }
94
92
  let(:language) { 'objective-c++' }
95
93
 
96
94
  it 'display daily ranking by language' do
@@ -124,95 +122,59 @@ RSpec.describe GitTrend::CLI do
124
122
  | 25 ryanb93/Applefy Objective-C++ 0
125
123
 
126
124
  EOS
127
- expect { @cli.invoke(:list, [], language: language, description: false) }.to output(res).to_stdout
125
+ expect { cli.invoke(:list, [], language: language, description: false) }.to output(res).to_stdout
128
126
  end
129
127
  end
130
128
  end
131
129
 
132
130
  describe 'with -s option' do
133
- before { stub_request_get("trending?since=#{since}") }
134
-
135
131
  context 'with no option' do
136
- let(:since) { '' }
137
- it_behaves_like 'since daily ranking'
132
+ before { stub_request_get('trending?since=') }
133
+ include_examples 'since daily ranking', ''
138
134
  end
139
135
 
140
- context 'with daily' do
141
- let(:since) { 'daily' }
142
- it_behaves_like 'since daily ranking'
136
+ describe 'since daily' do
137
+ before { stub_request_get('trending?since=daily') }
138
+ context 'with d' do
139
+ include_examples 'since daily ranking', 'd'
140
+ end
141
+
142
+ context 'with day' do
143
+ include_examples 'since daily ranking', 'day'
144
+ end
145
+
146
+ context 'with daily' do
147
+ include_examples 'since daily ranking', 'daily'
148
+ end
143
149
  end
144
150
 
145
- context 'with weekly' do
146
- let(:since) { 'weekly' }
147
- it 'display daily ranking since weekly' do
148
- res = <<-'EOS'.unindent
149
- |No. Name Lang Star
150
- |--- ---------------------------------------- ----------- ------
151
- | 1 DrkSephy/es6-cheatsheet JavaScript 5143
152
- | 2 FreeCodeCamp/FreeCodeCamp JavaScript 4555
153
- | 3 Microsoft/CNTK C++ 3548
154
- | 4 jiahaog/nativefier JavaScript 2593
155
- | 5 HunterLarco/voxel.css CSS 2054
156
- | 6 samshadwell/TrumpScript Python 1824
157
- | 7 Yalantis/uCrop Java 1731
158
- | 8 Soundnode/soundnode-app JavaScript 1230
159
- | 9 tensorflow/tensorflow C++ 953
160
- | 10 Jam3/devtool JavaScript 1170
161
- | 11 KnuffApp/Knuff Objective-C 1136
162
- | 12 brave/browser-laptop JavaScript 1030
163
- | 13 nlf/dlite Go 1051
164
- | 14 zquestz/s Go 971
165
- | 15 milligram/milligram CSS 959
166
- | 16 themattrix/bash-concurrent Shell 924
167
- | 17 kragniz/json-sempai Python 871
168
- | 18 loverajoel/jstips CSS 841
169
- | 19 chinchang/hint.css CSS 816
170
- | 20 hirak/prestissimo PHP 783
171
- | 21 rdpeng/ProgrammingAssignment2 R 8
172
- | 22 fengyuanchen/viewerjs JavaScript 729
173
- | 23 vhf/free-programming-books 620
174
- | 24 yamartino/pressure JavaScript 695
175
- | 25 cdmedia/cms.js JavaScript 677
151
+ describe 'since weekly' do
152
+ before { stub_request_get('trending?since=weekly') }
153
+ context 'with w' do
154
+ include_examples 'since weekly ranking', 'w'
155
+ end
176
156
 
177
- EOS
178
- expect { @cli.invoke(:list, [], since: since, description: false) }.to output(res).to_stdout
157
+ context 'with week' do
158
+ include_examples 'since weekly ranking', 'week'
159
+ end
160
+
161
+ context 'with weekly' do
162
+ include_examples 'since weekly ranking', 'weekly'
179
163
  end
180
164
  end
181
165
 
182
- context 'with monthly' do
183
- let(:since) { 'monthly' }
184
- it 'display daily ranking since monthly' do
185
- res = <<-'EOS'.unindent
186
- |No. Name Lang Star
187
- |--- ------------------------------------------ ----------- ------
188
- | 1 FreeCodeCamp/FreeCodeCamp JavaScript 15567
189
- | 2 loverajoel/jstips CSS 7710
190
- | 3 braydie/HowToBeAProgrammer 6786
191
- | 4 DrkSephy/es6-cheatsheet JavaScript 5127
192
- | 5 matryer/bitbar Objective-C 4946
193
- | 6 Microsoft/ChakraCore JavaScript 4689
194
- | 7 VerbalExpressions/JSVerbalExpressions JavaScript 4758
195
- | 8 tldr-pages/tldr Shell 4193
196
- | 9 jlevy/the-art-of-command-line 3966
197
- | 10 mhinz/vim-galore VimL 4062
198
- | 11 jiahaog/nativefier JavaScript 3932
199
- | 12 jlevy/og-equity-compensation 3797
200
- | 13 Microsoft/CNTK C++ 3537
201
- | 14 hacksalot/HackMyResume JavaScript 3252
202
- | 15 vhf/free-programming-books 2690
203
- | 16 milligram/milligram CSS 2876
204
- | 17 samshadwell/TrumpScript Python 2718
205
- | 18 sindresorhus/awesome 2640
206
- | 19 donnemartin/data-science-ipython-notebooks Python 2424
207
- | 20 tensorflow/tensorflow C++ 2033
208
- | 21 os-js/OS.js JavaScript 2357
209
- | 22 JakeLin/IBAnimatable Swift 2345
210
- | 23 viljamis/feature.js HTML 2239
211
- | 24 facebook/react-native Java 1962
212
- | 25 baidu-research/warp-ctc Cuda 1966
166
+ describe 'since monthly' do
167
+ before { stub_request_get('trending?since=monthly') }
168
+ context 'with m' do
169
+ include_examples 'since monthly ranking', 'm'
170
+ end
213
171
 
214
- EOS
215
- expect { @cli.invoke(:list, [], since: since, description: false) }.to output(res).to_stdout
172
+ context 'with month' do
173
+ include_examples 'since monthly ranking', 'month'
174
+ end
175
+
176
+ context 'with monthly' do
177
+ include_examples 'since monthly ranking', 'monthly'
216
178
  end
217
179
  end
218
180
  end
@@ -231,13 +193,13 @@ RSpec.describe GitTrend::CLI do
231
193
 
232
194
  context 'with no option' do
233
195
  it 'display daily ranking' do
234
- expect { @cli.invoke(:list, []) }.to output(dummy_result_no_options).to_stdout
196
+ expect { cli.invoke(:list, []) }.to output(dummy_result_no_options).to_stdout
235
197
  end
236
198
  end
237
199
 
238
200
  context 'terminal width is enough' do
239
201
  it 'display daily ranking with description' do
240
- expect { @cli.invoke(:list, [], description: true) }.to output(dummy_result_no_options).to_stdout
202
+ expect { cli.invoke(:list, [], description: true) }.to output(dummy_result_no_options).to_stdout
241
203
  end
242
204
  end
243
205
 
@@ -248,20 +210,18 @@ RSpec.describe GitTrend::CLI do
248
210
  end
249
211
 
250
212
  it 'display daily ranking about the same as no option' do
251
- expect { @cli.invoke(:list, [], description: true) }.to output(dummy_result_without_description).to_stdout
213
+ expect { cli.invoke(:list, [], description: true) }.to output(dummy_result_without_description).to_stdout
252
214
  end
253
215
  end
254
216
  end
255
217
 
256
218
  describe 'with -l and -s option' do
257
219
  context 'with ruby and weekly' do
258
- before do
259
- stub_request_get("trending?l=#{language}&since=#{since}")
260
- end
220
+ before { stub_request_get("trending?l=#{language}&since=#{since}") }
261
221
  let(:language) { 'ruby' }
262
222
  let(:since) { 'weekly' }
263
223
 
264
- it 'display daily ranking since weekly' do
224
+ it 'display weekly ranking by language' do
265
225
  res = <<-'EOS'.unindent
266
226
  |No. Name Lang Star
267
227
  |--- ---------------------------------------- ---------- ------
@@ -292,7 +252,7 @@ RSpec.describe GitTrend::CLI do
292
252
  | 25 thoughtbot/administrate Ruby 48
293
253
 
294
254
  EOS
295
- expect { @cli.invoke(:list, [], language: language, since: since, description: false) }.to output(res).to_stdout
255
+ expect { cli.invoke(:list, [], language: language, since: since, description: false) }.to output(res).to_stdout
296
256
  end
297
257
  end
298
258
  end
@@ -305,328 +265,19 @@ RSpec.describe GitTrend::CLI do
305
265
  stub_request_get('trending', 'trending_including_multibyte_characters')
306
266
  end
307
267
  it 'display daily ranking' do
308
- expect { @cli.invoke(:list, []) }.to output(dummy_result_no_options_with_multibyte_characters).to_stdout
268
+ expect { cli.invoke(:list, []) }.to output(dummy_result_no_options_with_multibyte_characters).to_stdout
309
269
  end
310
270
  end
311
271
  end
312
272
  end
313
273
 
314
274
  describe '#languages' do
315
- before do
316
- @cli = CLI.new
317
- stub_request_get('trending')
318
- end
275
+ before { stub_request_get('trending') }
276
+ let(:cli) { CLI.new }
319
277
 
320
278
  context 'with no option' do
321
- it 'display daily ranking' do
322
- res = <<-'EOS'.unindent
323
- |ABAP
324
- |ActionScript
325
- |Ada
326
- |Agda
327
- |AGS Script
328
- |Alloy
329
- |AMPL
330
- |ANTLR
331
- |ApacheConf
332
- |Apex
333
- |API Blueprint
334
- |APL
335
- |AppleScript
336
- |Arc
337
- |Arduino
338
- |ASP
339
- |AspectJ
340
- |Assembly
341
- |ATS
342
- |Augeas
343
- |AutoHotkey
344
- |AutoIt
345
- |Awk
346
- |Batchfile
347
- |Befunge
348
- |Bison
349
- |BitBake
350
- |BlitzBasic
351
- |BlitzMax
352
- |Bluespec
353
- |Boo
354
- |Brainfuck
355
- |Brightscript
356
- |Bro
357
- |C
358
- |C#
359
- |C++
360
- |Cap'n Proto
361
- |CartoCSS
362
- |Ceylon
363
- |Chapel
364
- |Charity
365
- |ChucK
366
- |Cirru
367
- |Clarion
368
- |Clean
369
- |Click
370
- |CLIPS
371
- |Clojure
372
- |CMake
373
- |COBOL
374
- |CoffeeScript
375
- |ColdFusion
376
- |Common Lisp
377
- |Component Pascal
378
- |Cool
379
- |Coq
380
- |Crystal
381
- |CSS
382
- |Cucumber
383
- |Cuda
384
- |Cycript
385
- |D
386
- |Darcs Patch
387
- |Dart
388
- |Diff
389
- |DIGITAL Command Language
390
- |DM
391
- |Dogescript
392
- |DTrace
393
- |Dylan
394
- |E
395
- |Eagle
396
- |eC
397
- |ECL
398
- |Eiffel
399
- |Elixir
400
- |Elm
401
- |Emacs Lisp
402
- |EmberScript
403
- |Erlang
404
- |F#
405
- |Factor
406
- |Fancy
407
- |Fantom
408
- |FLUX
409
- |Forth
410
- |FORTRAN
411
- |FreeMarker
412
- |Frege
413
- |Game Maker Language
414
- |GAMS
415
- |GAP
416
- |GDScript
417
- |Genshi
418
- |Gettext Catalog
419
- |GLSL
420
- |Glyph
421
- |Gnuplot
422
- |Go
423
- |Golo
424
- |Gosu
425
- |Grace
426
- |Grammatical Framework
427
- |Groff
428
- |Groovy
429
- |Hack
430
- |Handlebars
431
- |Harbour
432
- |Haskell
433
- |Haxe
434
- |HCL
435
- |HTML
436
- |Hy
437
- |HyPhy
438
- |IDL
439
- |Idris
440
- |IGOR Pro
441
- |Inform 7
442
- |Inno Setup
443
- |Io
444
- |Ioke
445
- |Isabelle
446
- |J
447
- |Jasmin
448
- |Java
449
- |JavaScript
450
- |JFlex
451
- |JSONiq
452
- |Julia
453
- |Jupyter Notebook
454
- |KiCad
455
- |Kit
456
- |Kotlin
457
- |KRL
458
- |LabVIEW
459
- |Lasso
460
- |Lean
461
- |Lex
462
- |LilyPond
463
- |Limbo
464
- |Liquid
465
- |LiveScript
466
- |LLVM
467
- |Logos
468
- |Logtalk
469
- |LOLCODE
470
- |LookML
471
- |LoomScript
472
- |LSL
473
- |Lua
474
- |M
475
- |Makefile
476
- |Mako
477
- |Markdown
478
- |Mask
479
- |Mathematica
480
- |Matlab
481
- |Max
482
- |MAXScript
483
- |Mercury
484
- |Metal
485
- |MiniD
486
- |Mirah
487
- |Modelica
488
- |Modula-2
489
- |Module Management System
490
- |Monkey
491
- |Moocode
492
- |MoonScript
493
- |MTML
494
- |mupad
495
- |Myghty
496
- |NCL
497
- |Nemerle
498
- |nesC
499
- |NetLinx
500
- |NetLinx+ERB
501
- |NetLogo
502
- |NewLisp
503
- |Nginx
504
- |Nimrod
505
- |Nit
506
- |Nix
507
- |NSIS
508
- |Nu
509
- |Objective-C
510
- |Objective-C++
511
- |Objective-J
512
- |OCaml
513
- |Omgrofl
514
- |ooc
515
- |Opa
516
- |Opal
517
- |OpenEdge ABL
518
- |OpenSCAD
519
- |Ox
520
- |Oxygene
521
- |Oz
522
- |Pan
523
- |Papyrus
524
- |Parrot
525
- |Pascal
526
- |PAWN
527
- |Perl
528
- |Perl6
529
- |PHP
530
- |PicoLisp
531
- |PigLatin
532
- |Pike
533
- |PLpgSQL
534
- |PLSQL
535
- |PogoScript
536
- |Pony
537
- |PostScript
538
- |PowerShell
539
- |Processing
540
- |Prolog
541
- |Propeller Spin
542
- |Protocol Buffer
543
- |Puppet
544
- |Pure Data
545
- |PureBasic
546
- |PureScript
547
- |Python
548
- |QMake
549
- |QML
550
- |R
551
- |Racket
552
- |Ragel in Ruby Host
553
- |RAML
554
- |RDoc
555
- |REALbasic
556
- |Rebol
557
- |Red
558
- |Redcode
559
- |RenderScript
560
- |RobotFramework
561
- |Rouge
562
- |Ruby
563
- |Rust
564
- |SaltStack
565
- |SAS
566
- |Scala
567
- |Scheme
568
- |Scilab
569
- |Self
570
- |Shell
571
- |ShellSession
572
- |Shen
573
- |Slash
574
- |Smali
575
- |Smalltalk
576
- |Smarty
577
- |SMT
578
- |SourcePawn
579
- |SQF
580
- |SQL
581
- |SQLPL
582
- |Squirrel
583
- |Stan
584
- |Standard ML
585
- |Stata
586
- |SuperCollider
587
- |Swift
588
- |SystemVerilog
589
- |Tcl
590
- |Tea
591
- |TeX
592
- |Thrift
593
- |Turing
594
- |TXL
595
- |TypeScript
596
- |UnrealScript
597
- |UrWeb
598
- |Vala
599
- |VCL
600
- |Verilog
601
- |VHDL
602
- |VimL
603
- |Visual Basic
604
- |Volt
605
- |Vue
606
- |Web Ontology Language
607
- |WebIDL
608
- |wisp
609
- |X10
610
- |xBase
611
- |XC
612
- |XML
613
- |Xojo
614
- |XPages
615
- |XProc
616
- |XQuery
617
- |XS
618
- |XSLT
619
- |Xtend
620
- |Yacc
621
- |Zephir
622
- |Zimpl
623
- |
624
- |300 languages
625
- |you can get only selected language list with '-l' option.
626
- |if languages is unknown, you can specify 'unkown'.
627
- |
628
- EOS
629
- expect { @cli.languages }.to output(res).to_stdout
279
+ it 'display languages' do
280
+ expect { cli.languages }.to output(dummy_languages).to_stdout
630
281
  end
631
282
  end
632
283
  end
@@ -637,7 +288,6 @@ RSpec.describe GitTrend::CLI do
637
288
  url = Scraper::BASE_HOST.dup
638
289
  url << "/#{stub_url}" if stub_url
639
290
  uri = URI.parse(url)
640
-
641
291
  stub_file = stub_file_name || stub_url
642
292
  stub_request(:get, uri)
643
293
  .to_return(
@@ -744,4 +394,380 @@ RSpec.describe GitTrend::CLI do
744
394
 
745
395
  EOS
746
396
  end
397
+
398
+ def dummy_weekly_result
399
+ <<-'EOS'.unindent
400
+ |No. Name Lang Star
401
+ |--- ---------------------------------------- ----------- ------
402
+ | 1 DrkSephy/es6-cheatsheet JavaScript 5143
403
+ | 2 FreeCodeCamp/FreeCodeCamp JavaScript 4555
404
+ | 3 Microsoft/CNTK C++ 3548
405
+ | 4 jiahaog/nativefier JavaScript 2593
406
+ | 5 HunterLarco/voxel.css CSS 2054
407
+ | 6 samshadwell/TrumpScript Python 1824
408
+ | 7 Yalantis/uCrop Java 1731
409
+ | 8 Soundnode/soundnode-app JavaScript 1230
410
+ | 9 tensorflow/tensorflow C++ 953
411
+ | 10 Jam3/devtool JavaScript 1170
412
+ | 11 KnuffApp/Knuff Objective-C 1136
413
+ | 12 brave/browser-laptop JavaScript 1030
414
+ | 13 nlf/dlite Go 1051
415
+ | 14 zquestz/s Go 971
416
+ | 15 milligram/milligram CSS 959
417
+ | 16 themattrix/bash-concurrent Shell 924
418
+ | 17 kragniz/json-sempai Python 871
419
+ | 18 loverajoel/jstips CSS 841
420
+ | 19 chinchang/hint.css CSS 816
421
+ | 20 hirak/prestissimo PHP 783
422
+ | 21 rdpeng/ProgrammingAssignment2 R 8
423
+ | 22 fengyuanchen/viewerjs JavaScript 729
424
+ | 23 vhf/free-programming-books 620
425
+ | 24 yamartino/pressure JavaScript 695
426
+ | 25 cdmedia/cms.js JavaScript 677
427
+
428
+ EOS
429
+ end
430
+
431
+ def dummy_monthly_result
432
+ <<-'EOS'.unindent
433
+ |No. Name Lang Star
434
+ |--- ------------------------------------------ ----------- ------
435
+ | 1 FreeCodeCamp/FreeCodeCamp JavaScript 15567
436
+ | 2 loverajoel/jstips CSS 7710
437
+ | 3 braydie/HowToBeAProgrammer 6786
438
+ | 4 DrkSephy/es6-cheatsheet JavaScript 5127
439
+ | 5 matryer/bitbar Objective-C 4946
440
+ | 6 Microsoft/ChakraCore JavaScript 4689
441
+ | 7 VerbalExpressions/JSVerbalExpressions JavaScript 4758
442
+ | 8 tldr-pages/tldr Shell 4193
443
+ | 9 jlevy/the-art-of-command-line 3966
444
+ | 10 mhinz/vim-galore VimL 4062
445
+ | 11 jiahaog/nativefier JavaScript 3932
446
+ | 12 jlevy/og-equity-compensation 3797
447
+ | 13 Microsoft/CNTK C++ 3537
448
+ | 14 hacksalot/HackMyResume JavaScript 3252
449
+ | 15 vhf/free-programming-books 2690
450
+ | 16 milligram/milligram CSS 2876
451
+ | 17 samshadwell/TrumpScript Python 2718
452
+ | 18 sindresorhus/awesome 2640
453
+ | 19 donnemartin/data-science-ipython-notebooks Python 2424
454
+ | 20 tensorflow/tensorflow C++ 2033
455
+ | 21 os-js/OS.js JavaScript 2357
456
+ | 22 JakeLin/IBAnimatable Swift 2345
457
+ | 23 viljamis/feature.js HTML 2239
458
+ | 24 facebook/react-native Java 1962
459
+ | 25 baidu-research/warp-ctc Cuda 1966
460
+
461
+ EOS
462
+ end
463
+
464
+ def dummy_languages
465
+ <<-'EOS'.unindent
466
+ |ABAP
467
+ |ActionScript
468
+ |Ada
469
+ |Agda
470
+ |AGS Script
471
+ |Alloy
472
+ |AMPL
473
+ |ANTLR
474
+ |ApacheConf
475
+ |Apex
476
+ |API Blueprint
477
+ |APL
478
+ |AppleScript
479
+ |Arc
480
+ |Arduino
481
+ |ASP
482
+ |AspectJ
483
+ |Assembly
484
+ |ATS
485
+ |Augeas
486
+ |AutoHotkey
487
+ |AutoIt
488
+ |Awk
489
+ |Batchfile
490
+ |Befunge
491
+ |Bison
492
+ |BitBake
493
+ |BlitzBasic
494
+ |BlitzMax
495
+ |Bluespec
496
+ |Boo
497
+ |Brainfuck
498
+ |Brightscript
499
+ |Bro
500
+ |C
501
+ |C#
502
+ |C++
503
+ |Cap'n Proto
504
+ |CartoCSS
505
+ |Ceylon
506
+ |Chapel
507
+ |Charity
508
+ |ChucK
509
+ |Cirru
510
+ |Clarion
511
+ |Clean
512
+ |Click
513
+ |CLIPS
514
+ |Clojure
515
+ |CMake
516
+ |COBOL
517
+ |CoffeeScript
518
+ |ColdFusion
519
+ |Common Lisp
520
+ |Component Pascal
521
+ |Cool
522
+ |Coq
523
+ |Crystal
524
+ |CSS
525
+ |Cucumber
526
+ |Cuda
527
+ |Cycript
528
+ |D
529
+ |Darcs Patch
530
+ |Dart
531
+ |Diff
532
+ |DIGITAL Command Language
533
+ |DM
534
+ |Dogescript
535
+ |DTrace
536
+ |Dylan
537
+ |E
538
+ |Eagle
539
+ |eC
540
+ |ECL
541
+ |Eiffel
542
+ |Elixir
543
+ |Elm
544
+ |Emacs Lisp
545
+ |EmberScript
546
+ |Erlang
547
+ |F#
548
+ |Factor
549
+ |Fancy
550
+ |Fantom
551
+ |FLUX
552
+ |Forth
553
+ |FORTRAN
554
+ |FreeMarker
555
+ |Frege
556
+ |Game Maker Language
557
+ |GAMS
558
+ |GAP
559
+ |GDScript
560
+ |Genshi
561
+ |Gettext Catalog
562
+ |GLSL
563
+ |Glyph
564
+ |Gnuplot
565
+ |Go
566
+ |Golo
567
+ |Gosu
568
+ |Grace
569
+ |Grammatical Framework
570
+ |Groff
571
+ |Groovy
572
+ |Hack
573
+ |Handlebars
574
+ |Harbour
575
+ |Haskell
576
+ |Haxe
577
+ |HCL
578
+ |HTML
579
+ |Hy
580
+ |HyPhy
581
+ |IDL
582
+ |Idris
583
+ |IGOR Pro
584
+ |Inform 7
585
+ |Inno Setup
586
+ |Io
587
+ |Ioke
588
+ |Isabelle
589
+ |J
590
+ |Jasmin
591
+ |Java
592
+ |JavaScript
593
+ |JFlex
594
+ |JSONiq
595
+ |Julia
596
+ |Jupyter Notebook
597
+ |KiCad
598
+ |Kit
599
+ |Kotlin
600
+ |KRL
601
+ |LabVIEW
602
+ |Lasso
603
+ |Lean
604
+ |Lex
605
+ |LilyPond
606
+ |Limbo
607
+ |Liquid
608
+ |LiveScript
609
+ |LLVM
610
+ |Logos
611
+ |Logtalk
612
+ |LOLCODE
613
+ |LookML
614
+ |LoomScript
615
+ |LSL
616
+ |Lua
617
+ |M
618
+ |Makefile
619
+ |Mako
620
+ |Markdown
621
+ |Mask
622
+ |Mathematica
623
+ |Matlab
624
+ |Max
625
+ |MAXScript
626
+ |Mercury
627
+ |Metal
628
+ |MiniD
629
+ |Mirah
630
+ |Modelica
631
+ |Modula-2
632
+ |Module Management System
633
+ |Monkey
634
+ |Moocode
635
+ |MoonScript
636
+ |MTML
637
+ |mupad
638
+ |Myghty
639
+ |NCL
640
+ |Nemerle
641
+ |nesC
642
+ |NetLinx
643
+ |NetLinx+ERB
644
+ |NetLogo
645
+ |NewLisp
646
+ |Nginx
647
+ |Nimrod
648
+ |Nit
649
+ |Nix
650
+ |NSIS
651
+ |Nu
652
+ |Objective-C
653
+ |Objective-C++
654
+ |Objective-J
655
+ |OCaml
656
+ |Omgrofl
657
+ |ooc
658
+ |Opa
659
+ |Opal
660
+ |OpenEdge ABL
661
+ |OpenSCAD
662
+ |Ox
663
+ |Oxygene
664
+ |Oz
665
+ |Pan
666
+ |Papyrus
667
+ |Parrot
668
+ |Pascal
669
+ |PAWN
670
+ |Perl
671
+ |Perl6
672
+ |PHP
673
+ |PicoLisp
674
+ |PigLatin
675
+ |Pike
676
+ |PLpgSQL
677
+ |PLSQL
678
+ |PogoScript
679
+ |Pony
680
+ |PostScript
681
+ |PowerShell
682
+ |Processing
683
+ |Prolog
684
+ |Propeller Spin
685
+ |Protocol Buffer
686
+ |Puppet
687
+ |Pure Data
688
+ |PureBasic
689
+ |PureScript
690
+ |Python
691
+ |QMake
692
+ |QML
693
+ |R
694
+ |Racket
695
+ |Ragel in Ruby Host
696
+ |RAML
697
+ |RDoc
698
+ |REALbasic
699
+ |Rebol
700
+ |Red
701
+ |Redcode
702
+ |RenderScript
703
+ |RobotFramework
704
+ |Rouge
705
+ |Ruby
706
+ |Rust
707
+ |SaltStack
708
+ |SAS
709
+ |Scala
710
+ |Scheme
711
+ |Scilab
712
+ |Self
713
+ |Shell
714
+ |ShellSession
715
+ |Shen
716
+ |Slash
717
+ |Smali
718
+ |Smalltalk
719
+ |Smarty
720
+ |SMT
721
+ |SourcePawn
722
+ |SQF
723
+ |SQL
724
+ |SQLPL
725
+ |Squirrel
726
+ |Stan
727
+ |Standard ML
728
+ |Stata
729
+ |SuperCollider
730
+ |Swift
731
+ |SystemVerilog
732
+ |Tcl
733
+ |Tea
734
+ |TeX
735
+ |Thrift
736
+ |Turing
737
+ |TXL
738
+ |TypeScript
739
+ |UnrealScript
740
+ |UrWeb
741
+ |Vala
742
+ |VCL
743
+ |Verilog
744
+ |VHDL
745
+ |VimL
746
+ |Visual Basic
747
+ |Volt
748
+ |Vue
749
+ |Web Ontology Language
750
+ |WebIDL
751
+ |wisp
752
+ |X10
753
+ |xBase
754
+ |XC
755
+ |XML
756
+ |Xojo
757
+ |XPages
758
+ |XProc
759
+ |XQuery
760
+ |XS
761
+ |XSLT
762
+ |Xtend
763
+ |Yacc
764
+ |Zephir
765
+ |Zimpl
766
+ |
767
+ |300 languages
768
+ |you can get only selected language list with '-l' option.
769
+ |if languages is unknown, you can specify 'unkown'.
770
+ |
771
+ EOS
772
+ end
747
773
  end