Browse Source

Сценарий отвязан от jQuery

master
Maxim Lihachev 9 years ago
parent
commit
8b93c34192
  1. 2
      gofem.html
  2. 98
      js/feminitives.js

2
gofem.html

@ -47,7 +47,7 @@ @@ -47,7 +47,7 @@
<div class="col-md-3"></div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<!-- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> -->
<script src="js/bootstrap.min.js"></script>
<script src="js/feminitives.js"></script>
</body>

98
js/feminitives.js

@ -2,15 +2,6 @@ @@ -2,15 +2,6 @@
// [ ] TODO: разбор переданного адреса
// [ ] TODO: vk.com
// [ ] TODO: валидация
// [ ] TODO: jQuery (?)
//Подготовка запросов к cors.how.sh
$.ajaxPrefilter(function (options) {
if (options.crossDomain && jQuery.support.cors) {
var http = (window.location.protocol === 'http:' ? 'http:' : 'https:');
options.url = http + '//cors.now.sh/' + options.url;
}
});
var FEM = {};
@ -135,19 +126,15 @@ function css_gender_gap() { return html_wrap(' \u26A7 ', "queer"); } @@ -135,19 +126,15 @@ function css_gender_gap() { return html_wrap(' \u26A7 ', "queer"); }
//Конструирование феминитива с gender_gap
function construct_feminitive(stem, ending, gap) {
if (gap) {
return stem + css_gender_gap() + css_end(ending);
} else {
return stem + "_" + ending;
}
return gap ? stem + css_gender_gap() + css_end(ending) : stem + "_" + ending;
}
//Создание феминитива
function make_feminitives(word) {
var stem = ""; //Основа слова
var stem = ""; //Основа слова
var current_ending = word.slice(-2); //Текущее окончание
var feminitives = new Array(); //Массив феминитивов
var femicards = new Array(); //Массив феминитивов для карточки
var feminitives = new Array(); //Массив феминитивов
var femicards = new Array(); //Массив феминитивов для карточки
for (var fem_ending in FEM.endings) {
FEM.endings[fem_ending].forEach(function(end) {
@ -162,22 +149,18 @@ function make_feminitives(word) { @@ -162,22 +149,18 @@ function make_feminitives(word) {
});
};
//При отсутствии феминитивов считать корректным исходное слово
if (feminitives.length === 0) {
femicards.push(word);
};
var femicard = random_word(femicards);
return [femicard, feminitives];
return [random_word(femicards) || word, feminitives];
}
//Запрос значения слова в викисловаре
function get_wiktionary(term, ui) {
var wiki_url = "https://ru.wiktionary.org/w/index.php?title=" + term + "&action=raw";
var cors_url = "https://cors.now.sh/";
var wiki_url = cors_url + "https://ru.wiktionary.org/w/index.php?title=" + term + "&action=raw";
return $.get(wiki_url, function (data) {
var wiki = data.split("\\n");
var definition = "";
var definition = "";
var parseWikiPage = function(page) {
var wiki = page.split("\\n");
for(var line = 0; line < wiki.length; line++){
if (wiki[line].match(/^.*==== Значение ====.*$/)) {
@ -195,54 +178,63 @@ function get_wiktionary(term, ui) { @@ -195,54 +178,63 @@ function get_wiktionary(term, ui) {
}
}
var w = "";
var ww = new Array();
//Разделение дефиниции на массив слов и знаков препинания
var current_word = "";
var tokens = new Array();
for (var l = 0; l <= definition.length; l++) {
if (/[^\wа-яА-Я]/.test(definition[l])) {
ww.push(w);
ww.push(definition[l]);
w = "";
tokens.push(current_word);
tokens.push(definition[l]);
current_word = "";
continue;
} else {
w += definition[l];
current_word += definition[l];
}
}
var dd = new Array();
ww.forEach(function(word) {
if (word.length > 2) {
dd.push(make_feminitives(word)[0]);
} else {
dd.push(word);
}
//Феминизация слов
var true_definition = new Array();
tokens.forEach(function(word) {
true_definition.push((word.length > 3) ? make_feminitives(word)[0] : word);
});
//DEBUG
console.log(ww.join(""));
console.log(dd);
//Замена местоимений, предлогов и проч.
var article = FEM.words.convert(dd.join(""));
var article = FEM.words.convert(true_definition.join(""));
//DEBUG
console.log(tokens.join(""));
console.log(true_definition);
console.log(article);
$("#" + ui).html(article);
});
document.getElementById(ui).innerHTML = article;
}
xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
parseWikiPage(xmlhttp.responseText);
}
}
xmlhttp.open("GET", wiki_url, false);
xmlhttp.send();
}
//Создание и вывод феминитива
function tr(word, descr) {
document.getElementById(descr).innerHTML = "";
//Исходное слово
var wd = $("#" + word).val().trim().split(" ")[0];
var wd = document.getElementById(word).value.trim().split(" ")[0];
//Вывод дефиниции
get_wiktionary(wd, descr + "-full");
$("#" + descr).empty();
var feminitives = make_feminitives(wd);
//Вывод информации
$("#" + descr).html(feminitives[1].join(" | "));
$("#" + descr + "-content").html(feminitives[0]);
document.getElementById(descr).innerHTML = feminitives[1].join(" | ");
document.getElementById(descr + "-content").innerHTML = feminitives[0];
}

Loading…
Cancel
Save