Petrovich
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡ ΠΏΠ°Π΄Π΅ΠΆΠ΅ΠΉ ΡΡΡΡΠΊΠΈΡ ΠΈΠΌΠ΅Π½, ΡΠ°ΠΌΠΈΠ»ΠΈΠΉ ΠΈ ΠΎΡΡΠ΅ΡΡΠ².
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
ΠΠ»Ρ NodeJS
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ npm:
npm install petrovich
ΠΠ»Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ°
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ bower:
bower install petrovich
ΠΠ»ΠΈ Π²ΡΡΡΠ½ΡΡ. Π‘ΡΡΠ»ΠΊΠ°: petrovich.min.js
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π Π±ΡΠ°ΡΠ·Π΅ΡΠ΅:
<script src="/path/to/petrovich/dist/petrovich.min.js"></script>
Π NodeJS:
var petrovich = require('petrovich');
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ΅ΡΡΠΎΠ²ΠΈΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ.
ΠΠ΅ΡΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ
// ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ person, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ gender
// ΠΈ Ρ
ΠΎΡΡ Π±Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² first, middle ΠΈ last
var person = {
gender: 'male',
first: 'ΠΠ΅ΡΡ',
last: 'Π§Π°ΠΉΠΊΠΎΠ²ΡΠΊΠΈΠΉ'
};
// Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΠ΅ΡΡΠΎΠ²ΠΈΡΠ° ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ, ΡΠΊΠ°Π·Π°Π² ΠΏΠ°Π΄Π΅ΠΆ:
petrovich(person, 'dative');
// Π²Π΅ΡΠ½Π΅Ρ ΠΊΠΎΠΏΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°:
// {gender: 'male', first: 'ΠΠ΅ΡΡΡ', last: 'Π§Π°ΠΉΠΊΠΎΠ²ΡΠΊΠΎΠΌΡ'}
ΠΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½ΠΎ ΠΎΡΡΠ΅ΡΡΠ²ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΡΡΠΈΡΡ ΠΏΠΎΠ», ΠΎΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ:
var person = {
first: 'ΠΠ΅ΡΡ',
middle: 'ΠΠ»ΡΠΈΡ',
last: 'Π§Π°ΠΉΠΊΠΎΠ²ΡΠΊΠΈΠΉ'
};
petrovich(person, 'dative');
// Π²Π΅ΡΠ½Π΅Ρ:
// {first: 'ΠΠ΅ΡΡΡ', middle: 'ΠΠ»ΡΠΈΡΡ', last: 'Π§Π°ΠΉΠΊΠΎΠ²ΡΠΊΠΎΠΌΡ', gender: 'male'}
ΠΡΠΎΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
// ΠΠ΅ΡΡΠΎΠ²ΠΈΡ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΡΠ΅ΠΏΠΎΡΠΊΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π²ΠΈΠ΄Π° petrovich[gender][nametype][case]:
petrovich.male.first.genitive('ΠΠ½Π΄ΡΠ΅ΠΉ') // Π²Π΅ΡΠ½Π΅Ρ "ΠΠ½Π΄ΡΠ΅Ρ"
petrovich.female.last.accusative('ΠΠ²Π°Π½ΠΎΠ²Π°') // Π²Π΅ΡΠ½Π΅Ρ "ΠΠ²Π°Π½ΠΎΠ²Ρ"
ΠΠ²ΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π° ΠΏΠΎ ΠΎΡΡΠ΅ΡΡΠ²Ρ
ΠΠ΅ΡΡΠΎΠ²ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠΎΠ» ΠΏΠΎ ΠΎΡΡΠ΅ΡΡΠ²Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ:
- ΠΌΡΠΆΡΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π° Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ Π½Π° "-ΠΈΡ",
- ΠΆΠ΅Π½ΡΠΊΠΈΠ΅ - Π½Π° "-Π½Π°",
- Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ "androgynous".
petrovich.detect_gender('ΠΠ²Π°Π½ΠΎΠ²ΠΈΡ') // Π²Π΅ΡΠ½Π΅Ρ 'male'
petrovich.detect_gender('ΠΠ»ΡΠΈΠ½ΠΈΡΠ½Π°') // Π²Π΅ΡΠ½Π΅Ρ 'female'
petrovich.detect_gender('ΠΠ»Π°Π±Π»Π°Π±Π»Π°') // Π²Π΅ΡΠ½Π΅Ρ 'androgynous'
CΠΏΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈ ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
ΠΠΎΠ» ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ:
- male - ΠΌΡΠΆΡΠΊΠΎΠΉ,
- female - ΠΆΠ΅Π½ΡΠΊΠΈΠΉ,
- androgynous - Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ.
Π’ΠΈΠΏΡ ΠΈΠΌΠ΅Π½ΠΈ:
- first - ΠΈΠΌΡ,
- last - ΡΠ°ΠΌΠΈΠ»ΠΈΡ,
- middle - ΠΎΡΡΠ΅ΡΡΠ²ΠΎ.
ΠΠ°Π΄Π΅ΠΆΠΈ:
- nominative - ΠΈΠΌΠ΅Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ (ΠΊΡΠΎ? ΡΡΠΎ?)
- genitive - ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ (ΠΊΠΎΠ³ΠΎ? ΡΠ΅Π³ΠΎ?)
- dative - Π΄Π°ΡΠ΅Π»ΡΠ½ΡΠΉ (ΠΊΠΎΠΌΡ? ΡΠ΅ΠΌΡ?)
- accusative - Π²ΠΈΠ½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ (ΠΊΠΎΠ³ΠΎ? ΡΡΠΎ?)
- instrumental - ΡΠ²ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ (ΠΊΠ΅ΠΌ? ΡΠ΅ΠΌ?)
- prepositional - ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ½ΡΠΉ (ΠΎ ΠΊΠΎΠΌ? ΠΎ ΡΠ΅ΠΌ?)
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ
ΠΠ²Π° ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ°ΠΉΠ»Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°:
- petrovich.js - ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ,
- rules.json - ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±Π΅ΡΡΡΡΡ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.
ΠΡΠ°Π²ΠΈΠ»Π° Π²ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π² ΠΌΠΎΠ΄ΡΠ»Ρ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ (ΡΠΌ. Π½ΠΈΠΆΠ΅).
Π ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ:
- Grunt Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ±ΠΎΡΠΊΠΈ,
- Jasmine Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ²:
sudo npm install -g grunt-cli
sudo npm install -g jasmine-node
ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ:
git clone https://github.com/petrovich/petrovich-js.git
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ:
npm install
Π’Π΅ΡΡΡ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ tests/spec/
. ΠΠ°ΠΏΡΡΠΊ ΡΠ΅ΡΡΠΎΠ²:
jasmine-node tests/spec/
# ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ:
npm test
Π‘Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ dist (Π²ΠΊΠ»ΡΡΠ°Π΅Ρ rules.json Π² petrovich.js ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΌΠΈΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΠΏΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ)
grunt build