This repository has been archived by the owner on Jun 27, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 43
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #226 from Apachina/2420_2
2420_2
- Loading branch information
Showing
9 changed files
with
222 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
# rubocop:disable Style/MultilineBlockChain | ||
# class BattlerMostUsableWordsCounter | ||
class BattlerMostUsableWordsCounter | ||
FOLDER_PATH = Dir.pwd.freeze | ||
attr_reader :text | ||
|
||
def initialize(text) | ||
@text = text | ||
end | ||
|
||
def run | ||
text_without_preposition.split(' ') | ||
.each_with_object(Hash.new(0)) do |word, counter| | ||
counter[word] += 1 | ||
end.to_a.sort_by { |_word, count| count } | ||
end | ||
|
||
private | ||
|
||
def text_without_preposition | ||
all_texts = text.downcase! | ||
prepositions_list = File.read("#{FOLDER_PATH}/prepositions").split(',') | ||
prepositions_list.inject(all_texts) { |texts, preposition| texts.gsub(/#{preposition}[аояиеёю ]/, '') } | ||
end | ||
end | ||
# rubocop:enable Style/MultilineBlockChain |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
source 'http://rubygems.org' | ||
gem 'commander' | ||
gem 'terminal-table' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Mini-project Versus-battle | ||
|
||
# Info | ||
|
||
Данной программой возможны несколько анализов текста: | ||
* Исследование всех файлов с текстами батлеров, находящийся в корневой папке. | ||
* Исследование текста на наличие мата. | ||
* Просмотр топ батлеров, использовавших наиболее часто матные слова. | ||
|
||
### Использование программы. Step-by-step. | ||
1. Открываем Terminal, и переходим в директорию, где находится данный продукт. | ||
2. В зависимости от решаемой задачи есть пара типов команд: | ||
'--top-bad-words [NUMBER]' - вывод топ самых матерящихся людей в заданном количестве; | ||
'--top-words [NUMBER] --name [NAME]' - вывод наиболее часто употребляемых слов во всех! текстах определенного человека. | ||
Пример вызова команды: | ||
' youfolderpath$ ruby options_file.rb --top-bad-words' [NUMBER] | ||
3. Для информации пропишите 'ruby options_file.rb --help' | ||
|
||
# Возможные изменения в программе: | ||
* Если вам захочется изменить( добавить или уменьшить) количество текстов, то вам следует файле 'versus.rb', 5 строка, указать полный путь к папке, где находятся данные текста. ВАЖНО! В данной папке должны находиться только текста батлеров. | ||
* Значение [NUMBER] и [NAME] - ваши желания, однако употребление [NAME] на транслите не учтено. Т.е. "Галахат" и "Galahat" - в данном случае будут разными батлерами. [NUMBER] в дефолтном состоянии выведет 30 строк. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# clas BadWordsCounter | ||
class BadWordsCounter | ||
FOLDER_PATH = Dir.pwd.freeze | ||
attr_reader :text | ||
|
||
def initialize(text) | ||
@text = text | ||
end | ||
|
||
def run | ||
load_bad_words.inject(0) { |counter, bad_word| counter + text.gsub(bad_word).count } | ||
end | ||
|
||
private | ||
|
||
def load_bad_words | ||
@load_bad_words ||= File.read("#{FOLDER_PATH}/bad_words").split(',') | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
6ля, 6лядь, 6лять, b3ъeб, cock, cunt, e6аль, ebal, eblan, eбал, eбать, eбуч, eбут, eблантий, fuck, fucker, fucking, xyев, xуй, xуя, xуе,xуй, xую, zaeb, zaebal, zaebali, zaebat, архипиздрит, ахуел, ахуеть, бздение, бздеть, бздех, бздецы, бздит, бздицы, бздло, бзднуть, бздун, бздунья, бздюха, бздюшка, бздюшко, бля, блябу, блябуду, блядь, бляди, блядина, блядище, блядки, блядовать, блядство, блядун, блядуны, бледунья, бледь, бледюга, блять, вафел, вафлёр, взъебка, взьебка, взьебывать, въеб, въебался, въебенн, въебусь, въебывать, выебать, выебал, выблядок, выблядыш, выеб, выебать,выебет, вы*бен, выебнулся, выебон, выебываться, выпердеть, высраться, выссаться, вьебен, гавно, гавнюк, гавнючка, гамно, гандон, гнид, гнида, гниды, говенка, говенный, говешка, говназия, говнецо, говнище, говно, говноед, говнолинк, говночист, говнюк, говнюха, говнядина, говняк, говняный, говнять, гондон, доебываться, долбоеб, долбоёб, долбоящер, дрисня, дрист, дристануть, дристать, дристун, дристуха, дрочелло, дрочена, дрочила, дрочилка, дрочистый, дрочить, дрочка, дрочун, е6ал, ебут, еб твою мать, ёб твою мать, ёбaн, ебaть, ебyч, ебал, ебало, ебальник, ебан, ебанамать, ебанат, ебаная, ёбаная, ебанический, ебанный, ебанныйврот, ебаное, ебануть, ебануться, ёбаную, ебаный, ебанько, ебарь, ебат, ёбат, ебатория, ебать, ебать-копать, ебаться, ебашить, ебёна, ебет, ебёт, ебец, ебик, ебин, ебись, ебическая, ебки, ебла, еблан, ебливый, еблище, ебло, еблыст, ебля, ёбн, ебнуть, ебнуться, ебня, ебошить, ебская, ебский, ебтвоюмать, ебун, ебут, ебуч, ебуче, ебучее, ебучий, ебучим, ебущ, ебырь, елда, елдак, елдачить, жопа, жопу, заговнять, задрачивать, задристать, задрота, зае6, заё6, заеб, заёб, заеба, заебал, заебанец, заебастая, заебастый, заебать, заебаться, заебашить, заебистое, заёбистое, заебистые, заёбистые, заебистый, заёбистый, заебись, заебошить, заебываться, залуп, залупа, залупу, залупаться, залупить, залупиться, замудохаться, запиздячить, засерать, засерун, засеря, засирать, засрун, захуячить, заябестая, злоеб, злоебучая, злоебучее, злоебучий, ибанамат, ибонех, изговнять, изговняться, изъебнуться, ипать, ипаться, ипаццо, Какдвапальцаобоссать, конча, курва, курвятник, лох, лошарa, лошара, лошары, лошок, лярва, малафья, манда, мандавошек, мандавошка, мандавошки, мандей, мандень, мандеть, мандища, мандой, манду, мандюк, минет, минетчик, минетчица, млять, мокрощелка, мокрощёлка, мразь, мудak, мудaк, мудаг, мудак, муде, мудель, мудеть, муди, мудил, мудила, мудистый, мудня, мудоеб, мудозвон, мудоклюй, на хер, на хуй, набздел, набздеть, наговнять, надристать, надрочить, наебать, наебет, наебнуть, наебнуться, наебывать, напиздел, напиздели, напиздело, напиздили, насрать, настопиздить, нахер, нахрен, нахуй, нахуйник, не ебет, не ебёт, невротебучий, невъебенно, нехира, нехрен, Нехуй, нехуйственно, ниибацо, ниипацца, ниипаццо, ниипет, никуя, нихера, нихуя, обдристаться, обосранец, обосрать, обосцать, обосцаться, обсирать, объебос, обьебать обьебос, однохуйственно, опездал, опизде, опизденивающе, остоебенить, остопиздеть, отмудохать, отпиздить, отпиздячить, отпороть, отъебись, охуевательский, охуевать, охуевающий, охуел, охуенно, охуеньчик, охуеть, охуительно, охуительный, охуяньчик, охуячивать, охуячить, очкун, падла, падонки, падонок, паскуда, педерас, педик, педрик, педрила, педрилло, педрило, педрилы, пездень, пездит, пездишь, пездо, пездят, пердануть, пердеж, пердение, пердеть, пердильник, перднуть, пёрднуть, пердун, пердунец, пердунина, пердунья, пердуха, пердь, переёбок, пернуть, пёрнуть, пи3д, пи3де, пи3ду, пиzдец, пидар, пидарaс, пидарас, пидарасы, пидары, пидор, пидорасы, пидорка, пидорок, пидоры, пидрас, пизда, пиздануть, пиздануться, пиздарваньчик, пиздато, пиздатое, пиздатый, пизденка, пизденыш, пиздёныш, пиздеть, пиздец, пиздит, пиздить, пиздиться, пиздишь, пиздища, пиздище, пиздобол, пиздоболы, пиздобратия, пиздоватая, пиздоватый, пиздолиз, пиздонутые, пиздорванец, пиздорванка, пиздострадатель, пизду, пиздуй, пиздун, пиздунья, пизды, пиздюга, пиздюк, пиздюлина, пиздюля, пиздят, пиздячить, педик, писбшки, писька, писькострадатель, писюн, писюшка, по хуй, по хую, подговнять, подонки, подонок, подъебнуть, подъебнуться, поебать, поебень, поёбываает, поскуда, посрать, потаскуха, потаскушка, похер, похерил, похерила, похерили, похеру, похрен, похрену, похуй, похуист, похуистка, похую, придурок, приебаться, припиздень, припизднутый, припиздюлина, пробзделся, проблядь, проеб, проебанка, проебать, промандеть, промудеть, пропизделся, пропиздеть, пропиздячить, раздолбай, разхуячить, разъ*б, разъ*ба, разебал, разъебай, разъебать, распиздай, распиздеться, распиздяй, распиздяйство, распроеть, сволота, сволочь, сговнять, секель, серун, серька, сестроеб, сикель, сила, сирать, сирывать, соси, сосать, спиздел, спиздеть, спиздил, спиздила, спиздили, спиздит, спиздить, срака, сраку, сраный, сранье, срать, срун, ссака, ссышь, стерва, страхопиздище, сука, суки, суходрочка, сучара, сучий, сучка, сучко, сучонок, сучье, сцание, сцать, сцука, сцуки, сцуконах, сцуль, сцыха, сцышь, съебаться, сыкун, трахае6, трахаеб, трахаёб, трахатель, ублюдок, уебать, уёбища, уебище, уёбище, уебищное, уёбищное, уебк, уебки, уёбки, уебок, уёбок, урюк, усраться, ушлепок, хyё, хyй, хyйня, хамло, хер, херня, хера, херовато, херовина, херовый, хитровыебанный, хитрожопый, хуeм, хуе, хуё, хуевато, хуёвенький, хуевина, хуево, хуевый, хуёвый, хуек, хуёк, хуел, хуем, хуенч, хуеныш, хуенький, хуеплет, хуеплёт, хуепромышленник, хуерик, хуерыло, хуесос, хуесоска, хуета, хуетень, хуею, хуи, хуй, хуйком, хуйло, хуйня, хуйрик, хуище, хуля, хую, хуюл, хуя, хуяк, хуякать, хуякнуть, хуяра, хуясе, хуячить, целка, чмо, чмошник, чмырь, шалава, шалавой, шараёбиться, шлюха, шлюхой, шлюшка, шлюхи, ябывает, * |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
require 'optparse' | ||
require './versus.rb' | ||
require 'terminal-table' | ||
require './TopBadWordsCounter.rb' | ||
require './BattlerMostUsableWordsCounter.rb' | ||
require './row.rb' | ||
|
||
# rubocop:disable Style/MultilineBlockChain | ||
|
||
options = { name: '', top_bad_words: 0, top_words: 30 } | ||
OptionParser.new do |opts| | ||
opts.banner = 'Usage: example.rb [options]' | ||
|
||
opts.on('--top-bad-words [NUMBER]', Integer, 'Максимальное количество самых нецензурных участников') do |number| | ||
options[:top_bad_words] = number | ||
end | ||
opts.on('--name [NAME]', String, 'Имя участника') do |name| | ||
options[:name] = name | ||
end | ||
opts.on('--top-words [NUMBER]', Integer, 'Наиболее часто употребляемые слова') do |number| | ||
options[:top_words] = number || 30 | ||
end | ||
end.parse! | ||
|
||
BATTLERS_NAMES_LIST = Battler.battler_names_list.freeze | ||
|
||
if options[:top_bad_words] > 0 | ||
all_information_about_battlers = BATTLERS_NAMES_LIST.map do |name| | ||
Battler.new(name).all_information_about_battler | ||
end.sort_by { |key| key[:bad_words_count] }.reverse | ||
rows = all_information_about_battlers.first(options[:top_bad_words]).inject([]) do |row, name| | ||
row << Row.new(name[:name], | ||
name[:battles_count], | ||
name[:bad_words_count], | ||
name[:words_in_battle], | ||
name[:words_in_raund]).run | ||
end | ||
table = Terminal::Table.new rows: rows | ||
puts table | ||
end | ||
|
||
return if options[:name].empty? | ||
name_battler = [] | ||
battler = Battler.new(options[:name]) | ||
BATTLERS_NAMES_LIST.each { |name| name_battler << name.split.first } | ||
if name_battler.include?(options[:name]) | ||
count_words = BattlerMostUsableWordsCounter.new(battler.all_battles_text) | ||
.run | ||
.pop(options[:top_words]) | ||
.reverse | ||
rows = count_words.inject([]) { |row, (word, count)| row << [word.to_s, "#{count} раз"] } | ||
table = Terminal::Table.new rows: rows | ||
puts table | ||
else | ||
puts "Рэпер #{options[:name]} мне не известен. Зато мне известны: " | ||
puts BATTLERS_NAMES_LIST.pop(3) | ||
puts '...' | ||
end | ||
# rubocop:enable Style/MultilineBlockChain |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
а, а-ля, без, без ведома, безоблагодаря, близ, близко от, в, в виде, в зависимости от, в интересах, в качестве, в лице, в отличие от, в отношении, в пандан, в пользу, в преддверии, в продолжение, в результате, в роли, в связи с, в силу, в случае, в соответствии с, в течение, в целях, в честь, вблизи, ввиду, вглубь, вдогон, вдоль, вдоль по, взамен, включая, вкруг, вместо, вне, внизу, внутри, внутрь, во, во имя, во славу, вовнутрь, возле, вокруг, вопреки, вослед, впереди, вплоть до, впредь до, вразрез, вроде, вслед, вслед за, вследствие, встречу, выключая, для, для-ради, до, З, за, за вычетом, за исключением, за счёт, замест, заместо, И, из, из-за, из-под, из-подо, изнутри, изо, исключая, исходя из, К, к, касаемо, касательно, ко, кончая, кроме, кругом, Л, лицом к лицу с, М, меж, между, мимо, Н, на, на благо, на виду у, на глазах у, на предмет, наверху, навроде, навстречу, над, надо, назад, назади, накануне, наместо, наперекор, наперерез, наперехват, наподобие, напротив, наряду с, насупротив, насчёт, начиная с, не без, не считая, невзирая на, недалеко от, независимо от, несмотря, несмотря на, ниже, О, о, об, обо, обок, обочь, около, окрест, окроме, окромя, округ, опосля,опричь, от, от имени, от лица, относительно, ото, П, перед, передо, по, по линии, по мере, по направлению к, по поводу, по причине, по случаю, по сравнению с, по-за, по-над, по-под, поблизости от, повдоль,поверх, под,под видом, под эгидой, подле, подо, подобно, позади, позадь, позднее, помимо, поперёд, поперёк, порядка, посверху, посереди, посередине, посерёдке, посередь, после, посреди, посредине, посредством, пред, предо, преж, прежде, при, при помощи, применительно к, про, промеж, против, противно, противу, путём, Р, ради, рядом с, С, с, с ведома, с помощью, с прицелом на, с точки зрения, с целью, сверх, сверху, свыше, середи, середь, что, не, ты, не, н, и, -, я, это, з, же, у, теб, как, он, она, оно, они, бы, но, ведь, твой, -, так, если, этот, чтобы, мне, то, все, где, чем, тво, был, раунд, или, мы, только, теперь, уже, мой, даже, еще, его, кто, вы, меня. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
# :reek:TooManyInstanceVariables | ||
|
||
# class Row | ||
class Row | ||
attr_reader :name, :battles_count, :bad_words_count, :words_in_battle, :words_in_raund | ||
|
||
def initialize(name, battles_count, bad_words_count, words_in_battle, words_in_raund) | ||
@name = name | ||
@battles_count = battles_count | ||
@bad_words_count = bad_words_count | ||
@words_in_battle = words_in_battle | ||
@words_in_raund = words_in_raund | ||
end | ||
|
||
def run | ||
rows = [name.to_s, | ||
" #{battles_count} батл" + correct_ending, | ||
" #{bad_words_count} нецензурных слов ", | ||
" #{words_in_battle} слова на батл ", | ||
" #{words_in_raund} слов в раунде"] | ||
rows | ||
end | ||
|
||
private | ||
|
||
def correct_ending | ||
if battles_count < 2 | ||
'' | ||
elsif battles_count > 1 && battles_count <= 4 | ||
'a' | ||
elsif battles_count >= 5 | ||
'ов' | ||
end | ||
end | ||
end |
Oops, something went wrong.