• Stars
    star
    102
  • Rank 335,584 (Top 7 %)
  • Language
    Go
  • License
    MIT License
  • Created over 6 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An inflection engine for golang

Flect

Go Reference Standard Test Go Report Card

This is a new inflection engine to replace https://github.com/markbates/inflect designed to be more modular, more readable, and easier to fix issues on than the original.

Flect provides word inflection features such as Singularize and Pluralize for English nouns and text utility features such as Camelize, Capitalize, Humanize, and more.

Due to the flexibly-complex nature of English noun inflection, it is almost impossible to cover all exceptions (such as identical/irregular plural). With this reason along with the main purpose of Flect, which is to make it easy to develop web application in Go, Flect has limitations with its own rules.

  • It covers regular rule (adding -s or -es and of the word)
  • It covers well-known irregular rules (such as -is to -es, -f to -ves, etc)
  • It covers well-known irregular words (such as children, men, etc)
  • If a word can be countable and uncountable like milk or time, it will be treated as countable.
  • If a word has more than one plural forms, which means it has at least one irregular plural, we tried to find most popular one. (The selected plural could be odd to you, please feel free to open an issue with back data)
    • For example, we selected "stadiums" over "stadia", "dwarfs" over "dwarves"
    • One or combination of en.wiktionary.org, britannica.com, and trends.google.com are used to check the recent usage trends.
  • However, we cannot cover all cases and some of our cases could not fit with your situation. You can override the default with functions such as InsertPlural(), InsertSingular(), or LoadInfrections().
  • If you have a json file named inflections.json in your application root, the file will be automatically loaded as your custom inflection dictionary.

Installation

$ go get github.com/gobuffalo/flect

Packages

github.com/gobuffalo/flect

The github.com/gobuffalo/flect package contains "basic" inflection tools, like pluralization, singularization, etc...

The Ident Type

In addition to helpful methods that take in a string and return a string, there is an Ident type that can be used to create new, custom, inflection rules.

The Ident type contains two fields.

  • Original - This is the original string that was used to create the Ident
  • Parts - This is a []string that represents all of the "parts" of the string, that have been split apart, making the segments easier to work with

Examples of creating new inflection rules using Ident can be found in the github.com/gobuffalo/flect/name package.

github.com/gobuffalo/flect/name

The github.com/gobuffalo/flect/name package contains more "business" inflection rules like creating proper names, table names, etc...

More Repositories

1

buffalo

Rapid Web Development w/ Go
Go
8,069
star
2

packr

The simple and easy way to embed static files into Go binaries.
Go
3,412
star
3

pop

A Tasty Treat For All Your Database Needs
Go
1,429
star
4

plush

The powerful template system that Go needs
Go
889
star
5

envy

Envy makes working with ENV variables in Go trivial.
Go
155
star
6

fizz

A Common DSL for Migrating Databases
Go
149
star
7

docs

The source for the Buffalo website
JavaScript
111
star
8

vuerecipe

A recipe for using Buffalo & Vue.js
Go
96
star
9

validate

This package provides a framework for writing validations for Go applications.
Go
95
star
10

velvet

A sweet velvety templating package
Go
73
star
11

genny

A framework for writing modular generators
Go
65
star
12

toodo

A Simple Todo Application Written in Buffalo
Go
60
star
13

tags

HTML tags in Go
Go
53
star
14

nulls

A collection of null types for the sql package
Go
44
star
15

buffalo-auth

Buffalo auth plugin helps adding username password authentication to your app
Go
41
star
16

authrecipe

A recipe for using Buffalo & Password Authentication
Go
29
star
17

suite

A test suite for Buffalo applications
Go
26
star
18

lush

Go
25
star
19

shoulders

SHOULDERS.md generator
Go
20
star
20

buffalo-pop

A plugin to use gobuffalo/pop with buffalo
Go
19
star
21

cli

The Buffalo CLI
Go
19
star
22

here

Go
16
star
23

buffalo-heroku

Sets up and deploys apps to Heroku
Go
16
star
24

events

Buffalo framework events management
Go
16
star
25

buffalo-plugins

This plugin has moved into github.com/gobuffalo/buffalo in buffalo v0.14.6. https://github.com/gobuffalo/buffalo
Go
16
star
26

gocraft-work-adapter

Implements the github.com/gobuffalo/buffalo/worker.Worker interface using the github.com/gocraft/work package.
Go
14
star
27

httptest

Go
14
star
28

mw-tokenauth

Buffalo token-based-authentication middleware
Go
13
star
29

buffalo-goth

Goth Generator for Buffalo
Go
12
star
30

toolkit

A tool discovery service for https://gobuffalo.io
Go
12
star
31

clara

Go
11
star
32

makr

File generation system
Go
11
star
33

packd

gobuffalo/packr interfaces
Go
9
star
34

buffalo-cli

Tools for developing Buffalo applications (v2 - WIP)
Go
9
star
35

logger

A common logging interface for the Buffalo ecosystem
Go
9
star
36

gothrecipe

A recipe for using Buffalo & Goth
Go
8
star
37

helpers

Go
8
star
38

release

Buffalo ecosystem release tool
Go
8
star
39

grift

Go based task runner
Go
8
star
40

mw-csrf

Buffalo CSRF Middleware
Go
7
star
41

mw-basicauth

Buffalo Basic Auth Middleware
Go
6
star
42

mw-i18n

Buffalo i18n Middleware
Go
6
star
43

homebrew-tap

Homebrew Formula for the buffalo projects binaries
Ruby
6
star
44

licenser

Go
5
star
45

meta

Introspection for buffalo applications
Go
5
star
46

buffalo-docker

This plugin has moved into github.com/gobuffalo/buffalo in buffalo v0.14.7.
Go
4
star
47

simple-ajax-recipe

A simple AJAX recipe for Buffalo
Go
4
star
48

soda

Soda is a CLI for https://github.com/gobuffalo/pop
Go
4
star
49

mw-forcessl

Buffalo Middleware to force SSL
Go
4
star
50

plugins

Go
4
star
51

mw-paramlogger

Buffalo Params Logger Middleware
Go
3
star
52

x

Collection of packages meant to be a "testing" ground for Buffalo packages
Go
3
star
53

mw-contenttype

Buffalo Content Type Middleware
Go
3
star
54

attrs

Go
2
star
55

plushgen

Go
2
star
56

pop-vgo

Shell
2
star
57

gogen

Go
1
star
58

replo

A GO REPL
Go
1
star
59

middleware

The default middleware for Buffalo apps
Go
1
star
60

mapgen

Go
1
star
61

mapi

Go
1
star
62

depgen

Go
1
star
63

gitgen

Makefile
1
star
64

syncx

Go
1
star