Git Product home page Git Product logo

petrovich-scala's Introduction

petrovich-scala

Петрович склоняет имена, фамилии и отчества на русском языке. Это порт библиотеки petrovich-js на Scala. Библиотека совместима со Scala 2.11 и Scala.js 0.6.5.

Использование

Для начала просто добавить библиотеку в зависимости вашего проекта

libraryDependencies += "com.github.fomkin" %% "petrovich-scala" % "0.1.1"

В случае Scala.js зависимость следует указывать так

libraryDependencies += "com.github.fomkin" %%% "petrovich-scala" % "0.1.1"

Теперь Петрович готов к работе. Давайте напишем немного кода.

import petrovich._

val person =
 LastName("Сидоров") ::
 FirstName("Иван") ::
 MiddleName("Петрович")

val res = petrovich(person, Case.Genitive)
res.last // Some("Сидорова")
res.first // Some("Ивана")
res.middle // Some("Петровича")

Если отчество не указано, то нужно обязательно указать пол иначе будет выброшено исключение PetrovichException.

val person =
 Gender.Female ::
 LastName("Сидорова") ::
 FirstName("Мария")

Можно удобно получать имя в виде строки.

val person =
 LastName("Бонч-Бруевич") ::
 FirstName("Виктор") ::
 MiddleName("Леопольдович")

person.firstLast // Виктор Бонч-Бруевич 
person.lastFirst // Бонч-Бруевич Виктор
person.lastFirstMiddle // Бонч-Бруевич Виктор Леопольдович
person.firstMiddleLast // Виктор Леопольдович Бонч-Бруевич

А еще есть альтернативный синтаксис, если вы понимаете о чем я.

petrovich.
  male.
  first("Лев").
  last("Щаранский").
  prepositional.
  firstLast

// Льве Щаранском

Person это список частей имени и пола человека. Мы можете этим воспользоваться

val middleNames = persons flatMap { person => 
  person collect { case MiddleName(s) => s }   
}

На этом все. Приятного использования!

Разрабатываем вместе

Я всегда рад вашим пулл-реквестам. Обратите внимание, что в проекте содержится субмодуль, так что не забудьте склонировать его тоже. Эта команда склонирует проект вместе с субмодулем.

git clone --recursive [email protected]:fomkin/petrovich-scala.git

petrovich-scala's People

Contributors

fomkin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.