Skip to content

Instantly share code, notes, and snippets.

@johnzeringue
Last active August 29, 2015 14:13
Show Gist options
  • Save johnzeringue/40f244489d02eb37bd72 to your computer and use it in GitHub Desktop.
Save johnzeringue/40f244489d02eb37bd72 to your computer and use it in GitHub Desktop.
Ideas for New Topsoil Settings API
//
// Ideas for New Topsoil Settings API
// ==================================
//
//
// Idea #1 - Inline Everything
// ---------------------------
//
// default to user/global setting
settings.addNumber("Common Num", useDefaultOrElse(5));
// after setting has become standardized
settings.addNumber(COMMON_NUM, 5);
// boolean example
settings.addBoolean("Test Boolean", true);
// color example
settings.addColor("Test Color", "#AB1045");
// number example
settings.addNumber("Test Number", 15).inRange(1, 20);
// string example
settings.addString("Test String", "hello").matching(/hel.*/);
// choice example
settings.addString("Test Choice", "hello").from("hello", "goodbye");
// category example
settings.addCategory("Test Category");
settings["Test Category"].add...
//
// Idea #2 - Anonymous Function Fun
// --------------------------------
//
settings.add(function (s) {
s.color("Test Color", "#AAB");
s.string("Test String", "Hello, world!");
// ...
});
// category example
settings.add("Category #1", "Category #2", function (s) {
// perform setting operations under all categories
});
// array syntax alternative
var axes = ["X Axis", "Y Axis"];
settings.add(axes, function (s) {
// do something
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment