git-trend 0.2.3 → 1.0.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: 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