Git Product home page Git Product logo

humanizer.jvm's Introduction

Logo

Humanizer.jvm is an adaptation of the humanizer framework for .Net which is made for the jvm and is written in Kotlin. Humanizer.jvm meets all your jvm needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities.

The current build status on the CI server is status

Table of contents

  • Features
    • Humanize date
    • Ordinalize
    • [Truncate] (#truncate)
    • [Inflector] (#inflector)
    • [Number to words] (#numbertowords)
    • [To quantity] (#toquantity)
    • [Humanize] (#humanize)
    • [DeHumanize] (#dehumanize)
    • [Roman numerals] (#romannumerals)

Extension methods Humanize for Java.Util.Date objects

You can Humanize an instance of Java.Util.Date and get back a string telling how far back or forward in time that is compared to a given date:

val cal = GregorianCalendar()
val dateToUse = GregorianCalendar(2014,Calendar.JANUARY, 5).getTime()
cal.setTime(dateToUse)
cal.add(Calendar.DATE, -1)
cal.getTime().Humanize(dateToUse) => "yesterday"
cal.add(Calendar.HOURS, -2)
cal.getTime.Humanize(dateToUse) => "2 hours ago"

cal.add(Calendar.HOURS, 30)
cal.Humanize(dateToUse) => "tomorrow"
cal.getTime.add(Calendar.HOURS, 2)
cal.getTime().Humanize(dateToUse) => "2 hours from now"

Or you can Humanize an instance of Java.Util.Date and get back a string telling how far back or forward in time that is compared to the current date:

val cal = GregorianCalendar()
cal.add(Calendar.DATE, -1)
cal.getTime().Humanize() => "yesterday"
cal.add(Calendar.HOURS, -2)
cal.getTime.Humanize() => "2 hours ago"

cal.add(Calendar.HOURS, 30)
cal.Humanize() => "tomorrow"
cal.getTime.add(Calendar.HOURS, 2)
cal.getTime().Humanize() => "2 hours from now"

Extension method millisecondsToTimespan for Int and Long objects

Since difference between dates are returned as milliseconds this method turns them into a readable form/ This is a naive implementation and does not account for leapseconds, this is the nature of this method. By default the milliseconds precision is turned off but you can add it by passing true.

1.milliSecondsToTimespan() => "0 seconds"
1.milliSecondsToTimespan(true) => "0 seconds and 1 millisecond"

99999999.milliSecondsToTimespan() => "1 day and 3 hours and 46 minutes and 39 seconds"
99999999.milliSecondsToTimespan(true) => "1 day and 3 hours and 46 minutes and 39 seconds and 999 milliseconds"

Extension method Ordinalize for Int objects

You can Ordinalize an instance of Int and get back a string with the ordinalized number:

var num = 1
num.ordinalize() => "1st"
num = 100
num.ordinalize() => "100th"

Extension method Ordinalize for String objects

You can Ordinalize an instance of String and get back a string with the ordinalized number:

var num = "1"
num.ordinalize() => "1st"
num = "100"
num.ordinalize() => "100th"

Extension method truncate for String objects

You can Truncate an instance of String and get back a string truncated with … at the end if needed:

var t = "a"
t.truncate(10) => "a"
t = "longer text then the length"
t.truncate(4) => "long…"

Extension method truncate for String objects with Truncator option

You can Truncate an instance of String and get back a string truncated with … at the end if needed: Truncator Enum * FixedLength = counts all characters * FixedNumberOfCharacters = counts only letters and digits * FixedNumberOfWords = counts the words by splitting on whitespace.

FixedLength

var t = "a"
t.truncate(10, truncator = Truncator.FixedLength) => "a"
t = "longer text then the length"
t.truncate(4, truncator = Truncator.FixedLength) => "long…"

FixedNumberOfCharacters

var t = "a"
t.truncate(10, truncator = Truncator.FixedNumberOfCharacters) => "a"
t = "Text with more characters than truncate length"
t.truncate(10, truncator = Truncator.FixedNumberOfCharacters) => "Text with m…"

FixedNumberOfWords

var t = "a"
t.truncate(10, truncator = Truncator.FixedNumberOfWords) => "a"
t = "Text with more words than truncate length"
t.truncate(4, truncator = Truncator.FixedNumberOfWords) => "Text with more words…"

Extension method truncate for String objects with TruncatorString option

You can Truncate an instance of String and get back a string truncated with a custom string at the end if needed:

var t = "a"
t.truncate(10, truncationString = "...") => "a"
t = "Text with more words than truncate length"
t.truncate(10, truncationsString = "...") => "Text wi..."

Extension method truncate for String objects with TruncatorString option

You can Truncate an instance of String and get back a string truncated from the left:

var t = "a"
t.truncate(10, truncateFrom = TruncateFrom.Left) => "a"
t = "Text with more words than truncate length"
t.truncate(10, truncateFrom = TruncateFrom.Left) => "…te length"

Or you can use a combination of the above parameters length, truncationString, truncator, truncateFrom.

Extension method camelize for String objects

Replaces underscores with hyphens in as String

Decapitalizes first word and removes underscores while capitalizing the next letter in a String

"customer_first_name".camelize() => "customerFirstName"

Extension method pascalize for String objects

Capitalizes first word and removes underscores while capitalizing the next letter in a String

"customer_first_name".pascalize() => "CustomerFirstName"

Extension method underscore for String objects

Replaces spaces with underscores and makes everything lowercase or looks for capitalized words and replaces them with underscore and lowercase in a String

"SomeTitleThatWillBeUnderscored".underscore() => "some_title_that_will_be_underscored"

Extension method titleize for String objects

Replaces underscores and dashes with spaces and capitalizes each word in a String

"some-title: The begining".titleize() => "Some Title: The Begining"

Extension method dasherize for String objects

Replaces underscores with dashes in a String.

"some_title".dasherize() => "some-title"

Extension method hyphenate for String objects

Replaces underscores with hyphens in a String.

"some_title".hyphenate() => "some-title"

Extension method pluralize for String objects

Gives the plural of a certain word.

"test".pluralize() => "tests"

"test".pluralize(Plurality.CouldBeEither) => "tests"
"tests".pluralize(Plurality.CouldBeEither) => "tests"

Extension method singularize for String objects

gives the singular of a certain word.

"tests".singularize() => "test"

"test".singularize(Plurality.CouldBeEither) => "test"
"tests".singularize(Plurality.CouldBeEither) => "test"

Extension method toWords for String objects

Gives the value in words.

1.toWords() => "one"
10.toWords() => "ten"

Extension method toOrdinalWords for String objects

Gives the value in ordinal words.

1.toOrdinalWords() => "first"
10.toOrdinalWords() => "tenth"

Extension method toQuantity for String objects

"case".toQuantity(1) => "1 case"
"cases".toQuantity(1) => "1 case"
"case".toQuantity(10) => "10 cases"

"cases".toQuantity(1, showAsQuantity = ShowQuantityAs.None) => "case"
"cases".toQuantity(2, showAsQuantity = ShowQuantityAs.None) => "cases"

"cases".toQuantity(1, showAsQuantity = ShowQuantityAs.Numeric) => "1 case"
"cases".toQuantity(2, showAsQuantity = ShowQuantityAs.Numeric) => "1 case"

"cases".toQuantity(1, showAsQuantity = ShowQuantityAs.Words) => "one case"
"cases".toQuantity(2, showAsQuantity = ShowQuantityAs.Words) => "two cases"

Extension method toQuantity for Int objects

1.toQuantity("case") => "1 case"
1.toQuantity("cases") => "1 case"
10.toQuantity("case") => "10 cases"

1.toQuantity("cases", showAsQuantity = ShowQuantityAs.None) => "case"
2.toQuantity("cases", showAsQuantity = ShowQuantityAs.None) => "cases"

1.toQuantity("cases", showAsQuantity = ShowQuantityAs.Numeric) => "1 case"
2.toQuantity("cases", showAsQuantity = ShowQuantityAs.Numeric) => "1 case"

1.toQuantity("cases", showAsQuantity = ShowQuantityAs.Words) => "one case"
2.toQuantity("cases", showAsQuantity = ShowQuantityAs.Words) => "two cases"

Extension method humanize for String objects

Turns pascalcased strings into sentences.

"PascalCaseInputStringIsTurnedIntoSentence".humanize() => "Pascal case input string is turned into sentence"
"Underscored_input_String_is_turned_INTO_sentence".humanize() => "Underscored input String is turned INTO sentence"
"HTMLIsTheLanguage".humanize() => "HTML is the language"

"CanReturnTitleCase".humanize(LetterCasing.Title) => "Can Return Title Case"

"CanReturnLowerCase".humanize(LetterCasing.LowerCase) => "can return lower case"

"CanReturnSentenceCase".humanize(LetterCasing.Sentence) => "Can return sentence case"

"CanHumanizeIntoUpperCase".humanize(LetterCasing.AllCaps) => "CAN HUMANIZE INTO UPPER CASE"

Extension method dehumanize for String objects

Turns sentences into pascalcased strings.

"Pascal case input string is turned into sentence".dehumanize() => "PascalCaseInputStringIsTurnedIntoSentencePascal case input string is turned into sentence"

Extension method toRoman for Int objects

Turns an Int into Roman numeral. Limit from 1 to 3999.

1.toRoman() => "I"
2.toRoman() => "II"
4.toRoman() => "IV"

Extension method fromRoman for String objects

Turns a Roman numeral into an Int. Limit from 1 to 3999.

"I".toRoman() => 1
"II".toRoman() => 2
"IV".toRoman() => 4

humanizer.jvm's People

Contributors

chrissie1 avatar hhariri avatar hmemcpy avatar mattbdean avatar mehdik avatar nskvortsov avatar valpackett avatar

Stargazers

 avatar

Watchers

 avatar  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.