Skip to content

Commit

Permalink
Merge branch 'develop' into feature-tutorials
Browse files Browse the repository at this point in the history
  • Loading branch information
Gabriel Foust committed Oct 16, 2015
2 parents 0e4dc23 + 8469a68 commit 1b002c2
Show file tree
Hide file tree
Showing 39 changed files with 2,602 additions and 1,313 deletions.
33 changes: 23 additions & 10 deletions Makefile
Expand Up @@ -19,18 +19,18 @@ MODULES := utility reactive graph model dfa plan enable system bind \
async hd qunit compile-dfa fn-worker

utility_LOC := hd/
utility_UNITS := adt helpers console schedule
utility_UNITS := adt helpers console schedule api

reactive_LOC := hd/
reactive_UNITS := observable property extensions promise ladder function logger
reactive_UNITS := observable property extensions promise accum ladder function logger api
reactive_DEPS := utility

graph_LOC := hd/
graph_UNITS := walker digraph cgraph sgraph stay
graph_DEPS := utility reactive

model_LOC := hd/
model_UNITS := ids variable method constraint context eqn builder path command array
model_UNITS := ids variable method constraint context eqn builder path command array api
model_DEPS := utility reactive

dfa_LOC := hd/
Expand All @@ -46,18 +46,18 @@ enable_UNITS := egraph report check
enable_DEPS := utility reactive graph

system_LOC := hd/
system_UNITS := pm activate topo
system_UNITS := pm activate topo api
system_DEPS := utility reactive graph model plan enable

bind_LOC := hd/
bind_UNITS := binding text edit css select checked enable mouse position clicked time forEach when rx factory
bind_UNITS := binding text edit css select checked enable mouse position clicked key time forEach when rx factory api
bind_DEPS := utility reactive model

async_LOC := hd/
async_UNITS := worker ajax
async_DEPS := utility reactive

hd_UNITS := api methods
hd_UNITS := api
hd_DEPS := utility reactive model graph plan enable bind system

qunit_UNITS := qunit.d utility reactive ladder graph model system
Expand All @@ -83,10 +83,12 @@ howto_RES := style.css collapse.js spinner.gif
######################################################################
# Target definitions

TARGETS := hotdrink qunit compile-dfa fn-worker
TARGETS := hotdrink hotpdf qunit compile-dfa fn-worker

hotdrink_MODS := utility reactive graph model dfa plan enable system bind async hd

hotpdf_MODS := utility reactive graph model dfa plan enable system hd

qunit_MODS := qunit

compile-dfa_MODS := shebang $(hotdrink_MODS) compile-dfa
Expand Down Expand Up @@ -164,7 +166,7 @@ help:
$(TARGETS) : % : $(TARGET_DIR)/$$*.js

.PHONY :
all : $(TARGETS) hotdrink.min howto
all : $(TARGETS) hotdrink.min hotpdf.min howto

.PHONY :
clean :
Expand Down Expand Up @@ -197,14 +199,17 @@ $(TARGET_MAPS) : $(TARGET_DIR)/%.js.map : $(TARGET_DIR)/%.js ;

.SECONDEXPANSION :
$(TARGET_FILES) :: $(TARGET_DIR)/%.js : $$($$*_TGT_MAPS) $$($$*_TGT_FILES) | $(TARGET_DIR)
@if which -s mapcat ; then \
@if which mapcat ; then \
echo mapcat -j $(TARGET_DIR)/$*.js -m $(TARGET_DIR)/$*.js.map \
$($*_TGT_MAPS) ; \
mapcat -j $(TARGET_DIR)/$*.js -m $(TARGET_DIR)/$*.js.map $($*_TGT_MAPS) ; \
else \
echo "make: *** Missing mapcat - cannot make scripts/$*.js.map" 1>&2 ; \
echo cat $($*_TGT_FILES) ">" $@ ; \
cat $($*_TGT_FILES) > $@ ; \
for file in $($*_TGT_FILES) ; do \
cat "$${file}" ; \
echo ; \
done > $@ ; \
fi

.SECONDEXPANSION :
Expand All @@ -225,6 +230,14 @@ $(TARGET_DIR)/hotdrink.min.js : $(TARGET_DIR)/hotdrink.js
uglifyjs $< -m -c warnings=false -o $@


hotpdf.min : $(TARGET_DIR)/hotpdf.min.js

$(TARGET_DIR)/hotpdf.min.js.map: $(TARGET_DIR)/hotpdf.min.js

$(TARGET_DIR)/hotpdf.min.js : $(TARGET_DIR)/hotpdf.js
uglifyjs $< -m -c warnings=false -o $@


howto: $(howto_DEP_FILES) $(howto_FILES) $(howto_RES_FILES)

$(howto_FILES) :: $(HOWTO_DIR)/$(PUBLISH_DIR)/%.html : $(HOWTO_DIR)/%.org publish-org.el | $(HOWTO_DIR)/$(TANGLE_DIR) $(HOWTO_DIR)/$(PUBLISH_DIR)
Expand Down
163 changes: 57 additions & 106 deletions src/hd/api.ts
Expand Up @@ -8,121 +8,72 @@ module hd {
import s = hd.system;
import b = hd.bindings;

export function arrayOf( elementType: m.ContextClass|m.ContextSpec ) {
return m.ArrayContext.bind( null, elementType );
export
function id<T>( x: T ): T {
return x;
}

export var array = m.ArrayContext;

/*==================================================================
* Enablement functions
*/

export function markUsed( p: r.Promise<any> ) {
p.usage.set( r.Usage.Used );
export
function sum() {
var n = arguments[0];
for (var i = 1, l = arguments.length; i < l; ++i) {
n+= arguments[i];
}
return n;
}

export function markUnused( p: r.Promise<any> ) {
p.usage.set( r.Usage.Unused );
export
function diff() {
var n = arguments[0];
for (var i = 1, l = arguments.length; i < l; ++i) {
n-= arguments[i];
}
return n;
}

export function markDelayed( p: r.Promise<any> ) {
p.usage.set( r.Usage.Delayed );
export
function prod() {
var n = arguments[0];
for (var i = 1, l = arguments.length; i < l; ++i) {
n-= arguments[i];
}
return n;
}

/*==================================================================
* Export
*/

export var dateCompare = u.dateCompare;
export var ProxyObserver = r.ProxyObserver;
export var BasicObservable = r.BasicObservable;
export var Promise = r.Promise;
export var Translator = r.Extension;
export var liftFunction = r.liftFunction;

export var dir = b.Direction;
export var bind = b.bind;
export var unbind = b.unbind;
export var performDeclaredBindings = b.performDeclaredBindings;
export var isObservable = b.isObservable;
export var isObserver = b.isObserver;
export var isExtension = b.isExtension;

export var Variable = m.Variable;
export var Constraint = m.Constraint;
export var Method = m.Method;
export var Context = m.Context;
export var ArrayContext = m.ArrayContext;
export var MaxOptional = m.Optional.Max;
export var MinOptional = m.Optional.Min;

// RunTime
export var PropertyModel = s.PropertyModel;
export var ContextBuilder = m.ContextBuilder;
export
function quot() {
var n = arguments[0];
for (var i = 1, l = arguments.length; i < l; ++i) {
n/= arguments[i];
}
}

// Bindings
export var Checked = b.Checked;
export var Click = b.Click;
export var CssClass = b.CssClass;
export var DblClick = b.DblClick;
export var Edit = b.Edit;
export var Enabled = b.Enabled;
export var MouseDown = b.MouseDown;
export var MouseUp = b.MouseUp;
export var MousePosition = b.MousePosition;
export var Position = b.Position;
export var Text = b.Text;
export var Time = b.Time;
export var Value = b.Value;
export
function max() {
var n: any;
for (var i = 0, l = arguments.length; i < l && n === undefined; ++i) {
n = arguments[i];
}
for (; i < l; ++i) {
if (arguments[i] > n) {
n = arguments[i];
}
}
return n;
}

// Factories
export var checked = b.checked;
export var click = b.click;
export var cssClass = b.cssClass;
export var dblclick = b.dblclick;
export var edit = b.edit;
export var editVar = b.editVar;
export var date = b.date;
export var dateVar = b.dateVar;
export var enabled = b.enabled;
export var forEach = b.forEach;
export var mousedown = b.mousedown;
export var mouseup = b.mouseup;
export var mousePosition = b.getMousePosition;
export var num = b.num;
export var numVar = b.numVar;
export var position = b.position;
export var text = b.text;
export var value = b.value;
export var when = b.when;
export
function min() {
var n: any;
for (var i = 0, l = arguments.length; i < l && n === undefined; ++i) {
n = arguments[i];
}
for (; i < l; ++i) {
if (arguments[i] < n) {
n = arguments[i];
}
}
return n;
}

// Extensions
export var chain = b.chain;
export var cn = b.cn;
export var dateToMilliseconds = b.dateToMilliseconds;
export var dateToDateString = b.dateToDateString;
export var dateToString = b.dateToString;
export var dateToTimeString = b.dateToTimeString;
export var def = b.def;
export var delay = b.delay;
export var exp = b.exp;
export var fix = b.fix;
export var fn = b.fn;
export var millisecondsToDate = b.millisecondsToDate;
export var msg = b.msg;
export var offset = b.offset;
export var path = b.path;
export var or = b.or;
export var pointToString = b.pointToString;
export var prec = b.prec;
export var rw = b.rw;
export var req = b.req;
export var round = b.round;
export var scale = b.scale;
export var stabilize = b.stabilize;
export var toDate = b.toDate;
export var toJson = b.toJson;
export var toNum = b.toNum;
export var toStr = b.toStr;
}
83 changes: 83 additions & 0 deletions src/hd/bind/api.ts
@@ -0,0 +1,83 @@
module hd {

import b = hd.bindings;


// Export
export var bind = b.bind;
export var unbind = b.unbind;
export var performDeclaredBindings = b.performDeclaredBindings;
export var Direction = b.Direction;
export var isObservable = b.isObservable;
export var isObserver = b.isObserver;
export var isExtension = b.isExtension;

// Bindings
export var Change = b.Change;
export var Checked = b.Checked;
export var Click = b.Click;
export var CssClass = b.CssClass;
export var DblClick = b.DblClick;
export var Edit = b.Edit;
export var Enabled = b.Enabled;
export var KeyDown = b.KeyDown;
export var MouseDown = b.MouseDown;
export var MouseUp = b.MouseUp;
export var MousePosition = b.MousePosition;
export var Position = b.Position;
export var Text = b.Text;
export var Time = b.Time;
export var Value = b.Value;

export var OnlyKey = b.OnlyKey;

// Factories
export var checked = b.checked;
export var click = b.click;
export var cssClass = b.cssClass;
export var dblclick = b.dblclick;
export var edit = b.edit;
export var editVar = b.editVar;
export var date = b.date;
export var dateVar = b.dateVar;
export var enabled = b.enabled;
export var forEach = b.forEach;
export var mousedown = b.mousedown;
export var mouseup = b.mouseup;
export var mousePosition = b.getMousePosition;
export var num = b.num;
export var numVar = b.numVar;
export var position = b.position;
export var text = b.text;
export var value = b.value;
export var when = b.when;

// Extensions
export var chain = b.chain;
export var cn = b.cn;
export var dateToMilliseconds = b.dateToMilliseconds;
export var dateToDateString = b.dateToDateString;
export var dateToString = b.dateToString;
export var dateToTimeString = b.dateToTimeString;
export var def = b.def;
export var delay = b.delay;
export var exp = b.exp;
export var fix = b.fix;
export var fn = b.fn;
export var millisecondsToDate = b.millisecondsToDate;
export var msg = b.msg;
export var offset = b.offset;
export var path = b.path;
export var or = b.or;
export var pointToString = b.pointToString;
export var prec = b.prec;
export var rw = b.rw;
export var req = b.req;
export var round = b.round;
export var scale = b.scale;
export var stabilize = b.stabilize;
export var toDate = b.toDate;
export var toJson = b.toJson;
export var toNum = b.toNum;
export var toStr = b.toStr;
}

0 comments on commit 1b002c2

Please sign in to comment.