atlasq 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/cache/formatted_output/one_line_language.json +1 -0
- data/cache/search_index/countries_by_language.json +1 -0
- data/cache/search_index/direct_match_language.json +1 -0
- data/cache/search_index/partial_match_language.json +1 -0
- data/lib/atlasq/cache.rb +3 -6
- data/lib/atlasq/command/any.rb +3 -0
- data/lib/atlasq/command/help.rb +8 -0
- data/lib/atlasq/command/language.rb +29 -0
- data/lib/atlasq/command/money.rb +1 -0
- data/lib/atlasq/command/region.rb +1 -0
- data/lib/atlasq/command.rb +7 -0
- data/lib/atlasq/data.rb +21 -0
- data/lib/atlasq/format.rb +31 -0
- data/lib/atlasq/partial_match.rb +7 -0
- data/lib/atlasq/shell.rb +4 -0
- data/lib/atlasq/version.rb +1 -1
- data/lib/atlasq.rb +1 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b6650dab0b4ef8c8f817c79eaeb02203d321ca79ccee4ee410e455cfdffe5c90
|
4
|
+
data.tar.gz: 6209c9628bae2509bf1f155b6cf4a4b4b27fd04dfd6c715b7fbdb5e6f677e529
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 16d0a6b8321a21a6bf790fd056ea0135a751cd0cea96c0417a6e52679e65a28a9c6ac70fbc07b2e4ec2fd425953f813e4a3bf7754bcf60b87d3fb1de88e66c1b
|
7
|
+
data.tar.gz: 3f14ee8d172d031ef478f9dd7398d8df789216c32d4c0308ca03e5944ada1b4c3e5d699d1b70d581eb8d219383fd6c4948994559bcb2ab7780c5760529d8b5f8
|
@@ -0,0 +1 @@
|
|
1
|
+
{"ca":"(ca/cat) Catalan; Valencian","ar":"(ar/ara) Arabic","ps":"(ps/pus) Pushto; Pashto","uz":"(uz/uzb) Uzbek","tk":"(tk/tuk) Turkmen","en":"(en/eng) English","sq":"(sq/alb) Albanian","hy":"(hy/arm) Armenian","ru":"(ru/rus) Russian","pt":"(pt/por) Portuguese","es":"(es/spa) Spanish; Castilian","gn":"(gn/grn) Guarani","sm":"(sm/smo) Samoan","de":"(de/ger) German","nl":"(nl/dut) Dutch; Flemish","sv":"(sv/swe) Swedish","az":"(az/aze) Azerbaijani","bs":"(bs/bos) Bosnian","hr":"(hr/hrv) Croatian","sr":"(sr/srp) Serbian","bn":"(bn/ben) Bengali","fr":"(fr/fre) French","ff":"(ff/ful) Fulah","bg":"(bg/bul) Bulgarian","rn":"(rn/run) Rundi","ms":"(ms/may) Malay","ay":"(ay/aym) Aymara","qu":"(qu/que) Quechua","dz":"(dz/dzo) Dzongkha","tn":"(tn/tsn) Tswana","be":"(be/bel) Belarusian","ln":"(ln/lin) Lingala","kg":"(kg/kon) Kongo","sw":"(sw/swa) Swahili","lu":"(lu/lub) Luba-Katanga","sg":"(sg/sag) Sango","it":"(it/ita) Italian","zh":"(zh/chi) Chinese","el":"(el/gre) Greek, Modern (1453-)","tr":"(tr/tur) Turkish","cs":"(cs/cze) Czech","sk":"(sk/slo) Slovak","da":"(da/dan) Danish","et":"(et/est) Estonian","ti":"(ti/tir) Tigrinya","am":"(am/amh) Amharic","fi":"(fi/fin) Finnish","fj":"(fj/fij) Fijian","hi":"(hi/hin) Hindi","ur":"(ur/urd) Urdu","fo":"(fo/fao) Faroese","ka":"(ka/geo) Georgian","kl":"(kl/kal) Kalaallisut; Greenlandic","ch":"(ch/cha) Chamorro","ht":"(ht/hat) Haitian; Haitian Creole","hu":"(hu/hun) Hungarian","id":"(id/ind) Indonesian","ga":"(ga/gle) Irish","he":"(he/heb) Hebrew","gv":"(gv/glv) Manx","fa":"(fa/per) Persian","is":"(is/ice) Icelandic","ja":"(ja/jpn) Japanese","ky":"(ky/kir) Kirghiz; Kyrgyz","km":"(km/khm) Central Khmer","ko":"(ko/kor) Korean","kk":"(kk/kaz) Kazakh","lo":"(lo/lao) Lao","si":"(si/sin) Sinhala; Sinhalese","ta":"(ta/tam) Tamil","st":"(st/sot) Sotho, Southern","lt":"(lt/lit) Lithuanian","lb":"(lb/ltz) Luxembourgish; Letzeburgesch","lv":"(lv/lav) Latvian","ro":"(ro/rum) Romanian; Moldavian; Moldovan","mg":"(mg/mlg) Malagasy","mh":"(mh/mah) Marshallese","mk":"(mk/mac) Macedonian","my":"(my/bur) Burmese","mn":"(mn/mon) Mongolian","mt":"(mt/mlt) Maltese","dv":"(dv/div) Divehi; Dhivehi; Maldivian","ny":"(ny/nya) Chichewa; Chewa; Nyanja","af":"(af/afr) Afrikaans","nb":"(nb/nob) Bokmål, Norwegian; Norwegian Bokmål","nn":"(nn/nno) Norwegian Nynorsk; Nynorsk, Norwegian","ne":"(ne/nep) Nepali","na":"(na/nau) Nauru","tl":"(tl/tgl) Tagalog","pl":"(pl/pol) Polish","rw":"(rw/kin) Kinyarwanda","sl":"(sl/slv) Slovenian","no":"(no/nor) Norwegian","so":"(so/som) Somali","ss":"(ss/ssw) Swati","th":"(th/tha) Thai","tg":"(tg/tgk) Tajik","to":"(to/ton) Tonga (Tonga Islands)","uk":"(uk/ukr) Ukrainian","la":"(la/lat) Latin","vi":"(vi/vie) Vietnamese","bi":"(bi/bis) Bislama","nr":"(nr/nbl) Ndebele, South; South Ndebele","ts":"(ts/tso) Tsonga","ve":"(ve/ven) Venda","xh":"(xh/xho) Xhosa","zu":"(zu/zul) Zulu","sn":"(sn/sna) Shona","nd":"(nd/nde) Ndebele, North; North Ndebele"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"ca":["ad"],"ar":["ae","bh","dj","dz","eg","er","il","iq","jo","km","kw","lb","ly","ma","mr","om","ps","qa","sa","sd","so","ss","sy","td","tn","ye"],"ps":["af"],"uz":["af","uz"],"tk":["af","tm"],"en":["ag","ai","as","au","bb","bm","bq","bs","bw","bz","ca","cc","ck","cm","cx","dm","er","fj","fk","fm","gb","gd","gg","gh","gi","gm","gs","gu","gy","hk","hm","ie","im","in","io","je","jm","ke","ki","kn","ky","lc","lr","ls","mf","mh","mp","ms","mt","mu","mw","my","na","nf","ng","nr","nu","nz","pg","ph","pk","pn","pr","ps","pw","rw","sb","sc","sd","sg","sh","sl","ss","sx","sz","tc","tk","to","tt","tv","tz","ug","um","us","vc","vg","vi","vu","ws","za","zm","zw"],"sq":["al","me"],"hy":["am","az","cy"],"ru":["am","by","kg","kz","ru","tj","uz"],"pt":["ao","br","cv","gw","mo","mz","pt","st","tl"],"es":["ar","bo","bz","cl","co","cr","cu","do","ec","eh","es","gq","gt","gu","hn","mx","ni","pa","pe","pr","py","sv","uy","ve"],"gn":["ar","py"],"sm":["as","ws"],"de":["at","be","ch","de","li","lu"],"nl":["aw","be","bq","cw","mf","nl","sr","sx"],"sv":["ax","fi","se"],"az":["az"],"bs":["ba","me"],"hr":["ba","hr","me"],"sr":["ba","me","rs"],"bn":["bd"],"fr":["be","bf","bi","bj","bl","ca","cd","cf","cg","ch","ci","cm","dj","eh","fr","ga","gf","gg","gn","gp","gq","ht","je","km","lb","lu","mc","mf","mg","ml","mq","mr","nc","ne","pf","pm","re","rw","sc","sn","td","tf","tg","tn","vu","wf","yt"],"ff":["bf","gn"],"bg":["bg"],"rn":["bi"],"ms":["bn","cx","my","sg"],"ay":["bo"],"qu":["bo"],"dz":["bt"],"tn":["bw","za"],"be":["by"],"ln":["cd","cg"],"kg":["cd"],"sw":["cd","ke","tz","ug"],"lu":["cd"],"sg":["cf"],"it":["ch","it","sm","va"],"zh":["cn","cx","hk","mo","tw"],"el":["cy","gr"],"tr":["cy","tr"],"cs":["cz"],"sk":["cz","sk"],"da":["dk"],"et":["ee"],"ti":["er"],"am":["et"],"fi":["fi"],"fj":["fj"],"hi":["fj","in"],"ur":["fj","pk"],"fo":["fo"],"ka":["ge"],"kl":["gl"],"ch":["gu","mp"],"ht":["ht"],"hu":["hu"],"id":["id"],"ga":["ie"],"he":["il","ps"],"gv":["im"],"fa":["ir"],"is":["is"],"ja":["jp"],"ky":["kg"],"km":["kh"],"ko":["kp","kr"],"kk":["kz"],"lo":["la"],"si":["lk"],"ta":["lk","sg"],"st":["ls","za"],"lt":["lt"],"lb":["lu"],"lv":["lv"],"ro":["md","ro"],"mg":["mg"],"mh":["mh"],"mk":["mk"],"my":["mm"],"mn":["mn"],"mt":["mt"],"dv":["mv"],"ny":["mw"],"af":["na","za"],"nb":["no"],"nn":["no"],"ne":["np"],"na":["nr"],"tl":["ph"],"pl":["pl"],"rw":["rw"],"sl":["si"],"no":["sj"],"so":["so"],"ss":["sz","za"],"th":["th"],"tg":["tj"],"to":["to"],"uk":["ua"],"la":["va"],"vi":["vn"],"bi":["vu"],"nr":["za"],"ts":["za"],"ve":["za"],"xh":["za"],"zu":["za"],"sn":["zw"],"nd":["zw"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"ca":"ca","cat":"ca","ar":"ar","ara":"ar","ps":"ps","pus":"ps","uz":"uz","uzb":"uz","tk":"tk","tuk":"tk","en":"en","eng":"en","sq":"sq","alb":"sq","hy":"hy","arm":"hy","ru":"ru","rus":"ru","pt":"pt","por":"pt","es":"es","spa":"es","gn":"gn","grn":"gn","sm":"sm","smo":"sm","de":"de","ger":"de","nl":"nl","dut":"nl","sv":"sv","swe":"sv","az":"az","aze":"az","bs":"bs","bos":"bs","hr":"hr","hrv":"hr","sr":"sr","srp":"sr","bn":"bn","ben":"bn","fr":"fr","fre":"fr","ff":"ff","ful":"ff","bg":"bg","bul":"bg","rn":"rn","run":"rn","ms":"ms","may":"ms","ay":"ay","aym":"ay","qu":"qu","que":"qu","dz":"dz","dzo":"dz","tn":"tn","tsn":"tn","be":"be","bel":"be","ln":"ln","lin":"ln","kg":"kg","kon":"kg","sw":"sw","swa":"sw","lu":"lu","lub":"lu","sg":"sg","sag":"sg","it":"it","ita":"it","zh":"zh","chi":"zh","el":"el","gre":"el","tr":"tr","tur":"tr","cs":"cs","cze":"cs","sk":"sk","slo":"sk","da":"da","dan":"da","et":"et","est":"et","ti":"ti","tir":"ti","am":"am","amh":"am","fi":"fi","fin":"fi","fj":"fj","fij":"fj","hi":"hi","hin":"hi","ur":"ur","urd":"ur","fo":"fo","fao":"fo","ka":"ka","geo":"ka","kl":"kl","kal":"kl","ch":"ch","cha":"ch","ht":"ht","hat":"ht","hu":"hu","hun":"hu","id":"id","ind":"id","ga":"ga","gle":"ga","he":"he","heb":"he","gv":"gv","glv":"gv","fa":"fa","per":"fa","is":"is","ice":"is","ja":"ja","jpn":"ja","ky":"ky","kir":"ky","km":"km","khm":"km","ko":"ko","kor":"ko","kk":"kk","kaz":"kk","lo":"lo","lao":"lo","si":"si","sin":"si","ta":"ta","tam":"ta","st":"st","sot":"st","lt":"lt","lit":"lt","lb":"lb","ltz":"lb","lv":"lv","lav":"lv","ro":"ro","rum":"ro","mg":"mg","mlg":"mg","mh":"mh","mah":"mh","mk":"mk","mac":"mk","my":"my","bur":"my","mn":"mn","mon":"mn","mt":"mt","mlt":"mt","dv":"dv","div":"dv","ny":"ny","nya":"ny","af":"af","afr":"af","nb":"nb","nob":"nb","nn":"nn","nno":"nn","ne":"ne","nep":"ne","na":"na","nau":"na","tl":"tl","tgl":"tl","pl":"pl","pol":"pl","rw":"rw","kin":"rw","sl":"sl","slv":"sl","no":"no","nor":"no","so":"so","som":"so","ss":"ss","ssw":"ss","th":"th","tha":"th","tg":"tg","tgk":"tg","to":"to","ton":"to","uk":"uk","ukr":"uk","la":"la","lat":"la","vi":"vi","vie":"vi","bi":"bi","bis":"bi","nr":"nr","nbl":"nr","ts":"ts","tso":"ts","ve":"ve","ven":"ve","xh":"xh","xho":"xh","zu":"zu","zul":"zu","sn":"sn","sna":"sn","nd":"nd","nde":"nd"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"catalan":["ca"],"valencian":["ca"],"valencien":["ca"],"arabic":["ar"],"arabe":["ar"],"pushto":["ps"],"pashto":["ps"],"pachto":["ps"],"uzbek":["uz"],"ouszbek":["uz"],"turkmen":["tk"],"turkmene":["tk"],"english":["en"],"anglais":["en"],"albanian":["sq"],"albanais":["sq"],"armenian":["hy"],"armenien":["hy"],"russian":["ru"],"russe":["ru"],"portuguese":["pt"],"portugais":["pt"],"spanish":["es"],"castilian":["es"],"espagnol":["es"],"castillan":["es"],"guarani":["gn"],"samoan":["sm"],"german":["de"],"allemand":["de"],"dutch":["nl"],"flemish":["nl"],"neerlandais":["nl"],"flamand":["nl"],"swedish":["sv"],"suedois":["sv"],"azerbaijani":["az"],"azeri":["az"],"bosnian":["bs"],"bosniaque":["bs"],"croatian":["hr"],"croate":["hr"],"serbian":["sr"],"serbe":["sr"],"bengali":["bn"],"french":["fr"],"francais":["fr"],"fulah":["ff"],"peul":["ff"],"bulgarian":["bg"],"bulgare":["bg"],"rundi":["rn"],"malay":["ms"],"malais":["ms"],"aymara":["ay"],"quechua":["qu"],"dzongkha":["dz"],"tswana":["tn"],"belarusian":["be"],"bielorusse":["be"],"lingala":["ln"],"kongo":["kg"],"swahili":["sw"],"luba-katanga":["lu"],"sango":["sg"],"italian":["it"],"italien":["it"],"chinese":["zh"],"chinois":["zh"],"greek":["el"],"modern":["el"],"1453-":["el"],"grec":["el"],"moderne":["el"],"apres":["el"],"1453":["el"],"turkish":["tr"],"turc":["tr"],"czech":["cs"],"tcheque":["cs"],"slovak":["sk"],"slovaque":["sk"],"danish":["da"],"danois":["da"],"estonian":["et"],"estonien":["et"],"tigrinya":["ti"],"tigrigna":["ti"],"amharic":["am"],"amharique":["am"],"finnish":["fi"],"finnois":["fi"],"fijian":["fj"],"fidjien":["fj"],"hindi":["hi"],"urdu":["ur"],"ourdou":["ur"],"faroese":["fo"],"feroien":["fo"],"georgian":["ka"],"georgien":["ka"],"kalaallisut":["kl"],"greenlandic":["kl"],"groenlandais":["kl"],"chamorro":["ch"],"haitian":["ht"],"creole":["ht"],"haitien":["ht"],"hungarian":["hu"],"hongrois":["hu"],"indonesian":["id"],"indonesien":["id"],"irish":["ga"],"irlandais":["ga"],"hebrew":["he"],"hebreu":["he"],"manx":["gv"],"mannois":["gv"],"persian":["fa"],"persan":["fa"],"icelandic":["is"],"islandais":["is"],"japanese":["ja"],"japonais":["ja"],"kirghiz":["ky"],"kyrgyz":["ky"],"central":["km"],"khmer":["km"],"korean":["ko"],"coreen":["ko"],"kazakh":["kk"],"lao":["lo"],"sinhala":["si"],"sinhalese":["si"],"singhalais":["si"],"tamil":["ta"],"tamoul":["ta"],"sotho":["st"],"southern":["st"],"du":["st","nr","nd"],"sud":["st","nr"],"lithuanian":["lt"],"lituanien":["lt"],"luxembourgish":["lb"],"letzeburgesch":["lb"],"luxembourgeois":["lb"],"latvian":["lv"],"letton":["lv"],"romanian":["ro"],"moldavian":["ro"],"moldovan":["ro"],"roumain":["ro"],"moldave":["ro"],"malagasy":["mg"],"malgache":["mg"],"marshallese":["mh"],"marshall":["mh"],"macedonian":["mk"],"macedonien":["mk"],"burmese":["my"],"birman":["my"],"mongolian":["mn"],"mongol":["mn"],"maltese":["mt"],"maltais":["mt"],"divehi":["dv"],"dhivehi":["dv"],"maldivian":["dv"],"maldivien":["dv"],"chichewa":["ny"],"chewa":["ny"],"nyanja":["ny"],"afrikaans":["af"],"bokmal":["nb"],"norwegian":["nb","nn","no"],"norvegien":["nb","nn","no"],"nynorsk":["nn"],"nepali":["ne"],"nepalais":["ne"],"nauru":["na"],"nauruan":["na"],"tagalog":["tl"],"polish":["pl"],"polonais":["pl"],"kinyarwanda":["rw"],"rwanda":["rw"],"slovenian":["sl"],"slovene":["sl"],"somali":["so"],"swati":["ss"],"thai":["th"],"tajik":["tg"],"tadjik":["tg"],"tonga":["to"],"islands":["to"],"tongan":["to"],"iles":["to"],"ukrainian":["uk"],"ukrainien":["uk"],"latin":["la"],"vietnamese":["vi"],"vietnamien":["vi"],"bislama":["bi"],"bichlamar":["bi"],"ndebele":["nr","nd"],"south":["nr"],"tsonga":["ts"],"venda":["ve"],"xhosa":["xh"],"zulu":["zu"],"zoulou":["zu"],"shona":["sn"],"north":["nd"],"nord":["nd"]}
|
data/lib/atlasq/cache.rb
CHANGED
@@ -13,14 +13,11 @@ module Atlasq
|
|
13
13
|
@get ||= {}
|
14
14
|
@get.fetch(full_name) do
|
15
15
|
path = "#{CACHE_DIR}/#{full_name}"
|
16
|
+
|
16
17
|
content = File.read(path)
|
18
|
+
content = JSON.parse(content) if full_name.end_with?(".json")
|
17
19
|
|
18
|
-
|
19
|
-
when /\.json$/
|
20
|
-
JSON.parse(content)
|
21
|
-
else
|
22
|
-
content
|
23
|
-
end
|
20
|
+
@get[full_name] = content
|
24
21
|
end
|
25
22
|
end
|
26
23
|
end
|
data/lib/atlasq/command/any.rb
CHANGED
@@ -5,6 +5,7 @@ require_relative "base"
|
|
5
5
|
module Atlasq
|
6
6
|
module Command
|
7
7
|
class Any < Base
|
8
|
+
# @return [String]
|
8
9
|
def content
|
9
10
|
search_terms.map do |term|
|
10
11
|
if (country = Data.country(term))
|
@@ -14,6 +15,8 @@ module Atlasq
|
|
14
15
|
Format.countries(country_codes, title: "Region: #{region_name}")
|
15
16
|
elsif (currencies = Data.countries_by_currencies(term))
|
16
17
|
Format.currencies(currencies)
|
18
|
+
elsif (languages = Data.countries_by_languages(term))
|
19
|
+
Format.languages(languages)
|
17
20
|
else
|
18
21
|
Atlasq.failed!
|
19
22
|
"Unknown search term: #{term}"
|
data/lib/atlasq/command/help.rb
CHANGED
@@ -61,6 +61,14 @@ module Atlasq
|
|
61
61
|
3. symbol
|
62
62
|
4. partial match on name
|
63
63
|
|
64
|
+
-l/--language
|
65
|
+
: Display all countries by language
|
66
|
+
-l/--language [query ...]
|
67
|
+
: Search for countries by the following criteria
|
68
|
+
1. alpha2 (ISO639 standard 2 letter code)
|
69
|
+
2. alpha3 (ISO639 standard 3 letter code)
|
70
|
+
3. partial match on name in English or French
|
71
|
+
|
64
72
|
-h/--help
|
65
73
|
: Display this page
|
66
74
|
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "base"
|
4
|
+
|
5
|
+
module Atlasq
|
6
|
+
module Command
|
7
|
+
class Language < Base
|
8
|
+
# @return [String]
|
9
|
+
def content
|
10
|
+
if search_terms.empty?
|
11
|
+
languages = Data.all_languages
|
12
|
+
Format.languages(languages)
|
13
|
+
else
|
14
|
+
search_terms.map do |term|
|
15
|
+
if (languages = Data.countries_by_languages(term))
|
16
|
+
Format.languages(languages)
|
17
|
+
elsif (currency_codes = PartialMatch.languages(term)).any?
|
18
|
+
languages = Data.countries_by_languages(currency_codes)
|
19
|
+
Format.languages(languages, partial_match: true)
|
20
|
+
else
|
21
|
+
Atlasq.failed!
|
22
|
+
"Unknown language: #{term}"
|
23
|
+
end
|
24
|
+
end.join("\n\n")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/atlasq/command/money.rb
CHANGED
data/lib/atlasq/command.rb
CHANGED
@@ -4,6 +4,7 @@ module Atlasq
|
|
4
4
|
module Command
|
5
5
|
autoload :Any, "atlasq/command/any"
|
6
6
|
autoload :Country, "atlasq/command/country"
|
7
|
+
autoload :Language, "atlasq/command/language"
|
7
8
|
autoload :Region, "atlasq/command/region"
|
8
9
|
autoload :Money, "atlasq/command/money"
|
9
10
|
autoload :Version, "atlasq/command/version"
|
@@ -14,6 +15,8 @@ module Atlasq
|
|
14
15
|
# @param args [Array<String>]
|
15
16
|
Options = Struct.new(:command, :args, keyword_init: true)
|
16
17
|
|
18
|
+
# @param args [Array<String>] command line arguments
|
19
|
+
# @return [Atlasq::Command::Options]
|
17
20
|
def self.parse(args)
|
18
21
|
command = parse_command(args.first)
|
19
22
|
args.shift unless command.to_s == "Atlasq::Command::Any"
|
@@ -22,10 +25,14 @@ module Atlasq
|
|
22
25
|
Options.new(command: command, args: args).freeze
|
23
26
|
end
|
24
27
|
|
28
|
+
# @param command [String]
|
29
|
+
# @return [Atlasq::Command::Base]
|
25
30
|
def self.parse_command(command)
|
26
31
|
case command
|
27
32
|
when "-c", "--country", "--countries"
|
28
33
|
Country
|
34
|
+
when "-l", "--language", "--languages"
|
35
|
+
Language
|
29
36
|
when "-r", "--region", "--regions"
|
30
37
|
Region
|
31
38
|
when "-m", "--money"
|
data/lib/atlasq/data.rb
CHANGED
@@ -52,5 +52,26 @@ module Atlasq
|
|
52
52
|
def self.all_currencies
|
53
53
|
Cache.get("search_index/countries_by_currency.json")
|
54
54
|
end
|
55
|
+
|
56
|
+
# @param terms [String, Array<String>] search terms
|
57
|
+
# @return [Hash<String, Array<String>>] ISO639 2 letter language code to ISO3166 2 letter country codes
|
58
|
+
def self.countries_by_languages(terms)
|
59
|
+
terms = Array(terms)
|
60
|
+
languages = Cache
|
61
|
+
.get("search_index/direct_match_language.json")
|
62
|
+
.values_at(*terms)
|
63
|
+
.compact
|
64
|
+
|
65
|
+
return if languages.empty?
|
66
|
+
|
67
|
+
Cache
|
68
|
+
.get("search_index/countries_by_language.json")
|
69
|
+
.slice(*languages)
|
70
|
+
end
|
71
|
+
|
72
|
+
# @return [Hash<String, Array<String>>] ISO639 2 letter language code to ISO3166 2 letter country codes
|
73
|
+
def self.all_languages
|
74
|
+
Cache.get("search_index/countries_by_language.json")
|
75
|
+
end
|
55
76
|
end
|
56
77
|
end
|
data/lib/atlasq/format.rb
CHANGED
@@ -141,10 +141,41 @@ module Atlasq
|
|
141
141
|
end
|
142
142
|
end
|
143
143
|
|
144
|
+
# @param currency_code [String]
|
145
|
+
# @return [String]
|
144
146
|
def self.one_line_currency(currency_code)
|
145
147
|
Cache
|
146
148
|
.get("formatted_output/one_line_currency.json")
|
147
149
|
.fetch(currency_code)
|
148
150
|
end
|
151
|
+
|
152
|
+
# @param languages [Hash<String, Array<String>>] 2 letter ISO639 language code to ISO3166 2 letter country codes
|
153
|
+
# @param partial_match [Boolean] defaults to false
|
154
|
+
# @return [String]
|
155
|
+
def self.languages(languages, partial_match: false)
|
156
|
+
languages = languages.to_h do |language, countries|
|
157
|
+
[
|
158
|
+
Format.one_line_language(language),
|
159
|
+
countries.map(&Format.method(:one_line_country)),
|
160
|
+
]
|
161
|
+
end
|
162
|
+
|
163
|
+
if !partial_match && languages.size == 1
|
164
|
+
title, elements = languages.first
|
165
|
+
title = "Language: #{title}"
|
166
|
+
Format.brief_template(title: title, elements: elements)
|
167
|
+
else
|
168
|
+
title = partial_match ? "Languages (Partial Match)" : "Languages"
|
169
|
+
Format.brief_template(title: title, elements: languages)
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
# @param language [String] 2 letter ISO639 language code
|
174
|
+
# @return [String]
|
175
|
+
def self.one_line_language(language)
|
176
|
+
Cache
|
177
|
+
.get("formatted_output/one_line_language.json")
|
178
|
+
.fetch(language)
|
179
|
+
end
|
149
180
|
end
|
150
181
|
end
|
data/lib/atlasq/partial_match.rb
CHANGED
@@ -15,5 +15,12 @@ module Atlasq
|
|
15
15
|
@currencies ||= Util::WordMap.new(index: Cache.get("search_index/partial_match_currency.json"))
|
16
16
|
@currencies.search(term)
|
17
17
|
end
|
18
|
+
|
19
|
+
# @param term [String]
|
20
|
+
# @return [Array<String>] 2 letter language codes (ISO639)
|
21
|
+
def self.languages(term)
|
22
|
+
@languages ||= Util::WordMap.new(index: Cache.get("search_index/partial_match_language.json"))
|
23
|
+
@languages.search(term)
|
24
|
+
end
|
18
25
|
end
|
19
26
|
end
|
data/lib/atlasq/shell.rb
CHANGED
@@ -4,6 +4,7 @@ module Atlasq
|
|
4
4
|
module Shell
|
5
5
|
SKIP_PAGER = %i[usage version].freeze
|
6
6
|
|
7
|
+
# @param [Array<String>] command line arguments
|
7
8
|
def self.start!(args = ARGV)
|
8
9
|
warn "DEBUG: args: #{args}" if DEBUG
|
9
10
|
options = Command.parse(args)
|
@@ -24,6 +25,9 @@ module Atlasq
|
|
24
25
|
|
25
26
|
DEFAULT_SHELL_HEIGHT = 24
|
26
27
|
|
28
|
+
# @param options [Atlasq::Command::Options]
|
29
|
+
# @param content [String]
|
30
|
+
# @return [Boolean]
|
27
31
|
def self.use_pager?(options, content)
|
28
32
|
$stdout.tty? &&
|
29
33
|
options.command.to_pager? &&
|
data/lib/atlasq/version.rb
CHANGED
data/lib/atlasq.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: atlasq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Robell
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tty-pager
|
@@ -38,14 +38,18 @@ files:
|
|
38
38
|
- cache/formatted_output/multiline_country.json
|
39
39
|
- cache/formatted_output/one_line_country.json
|
40
40
|
- cache/formatted_output/one_line_currency.json
|
41
|
+
- cache/formatted_output/one_line_language.json
|
41
42
|
- cache/list/all_countries.json
|
42
43
|
- cache/list/all_subregions.json
|
43
44
|
- cache/search_index/countries_by_currency.json
|
45
|
+
- cache/search_index/countries_by_language.json
|
44
46
|
- cache/search_index/countries_by_region.json
|
45
47
|
- cache/search_index/direct_match_country.json
|
46
48
|
- cache/search_index/direct_match_currency.json
|
49
|
+
- cache/search_index/direct_match_language.json
|
47
50
|
- cache/search_index/partial_match_country.json
|
48
51
|
- cache/search_index/partial_match_currency.json
|
52
|
+
- cache/search_index/partial_match_language.json
|
49
53
|
- exe/atlasq
|
50
54
|
- lib/atlasq.rb
|
51
55
|
- lib/atlasq/cache.rb
|
@@ -54,6 +58,7 @@ files:
|
|
54
58
|
- lib/atlasq/command/base.rb
|
55
59
|
- lib/atlasq/command/country.rb
|
56
60
|
- lib/atlasq/command/help.rb
|
61
|
+
- lib/atlasq/command/language.rb
|
57
62
|
- lib/atlasq/command/money.rb
|
58
63
|
- lib/atlasq/command/region.rb
|
59
64
|
- lib/atlasq/command/usage.rb
|