{"action":"created","comment":{"url":"https://api.github.com/repos/fusetools/fuselibs-public/pulls/comments/120302030","pull_request_review_id":42244758,"id":120302030,"diff_hunk":"@@ -33,4 +34,462 @@ namespace Fuse.Reactive\n \t\t\treturn \"max(\" + Left + \", \" + Right + \")\";\n \t\t}\n \t}\n+\t\n+\t[UXFunction(\"mod\")]\n+\tpublic sealed class Mod : BinaryOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Mod([UXParameter(\"Left\")] Expression left, [UXParameter(\"Right\")] Expression right): base(left, right) {}\n+\t\tprotected override object Compute(object left, object right)\n+\t\t{\n+\t\t\treturn Math.Mod( Marshal.ToFloat(left), Marshal.ToFloat(right) );\n+\t\t}\n+\n+\t\tpublic override string ToString()\n+\t\t{\n+\t\t\treturn \"mod(\" + Left + \", \" + Right + \")\";\n+\t\t}\n+\t}\n+\n+\t[UXFunction(\"even\")]\n+\t/** True if the rounded value is even, false otherwise*/\n+\tpublic sealed class Even : UnaryOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Even([UXParameter(\"Operand\")] Expression operand): base(operand) {}\n+\t\tprotected override object Compute(object operand)\n+\t\t{\n+\t\t\tfloat v = 0;\n+\t\t\tif (!Marshal.TryToType<float>(operand, out v))\n+\t\t\t\treturn null;\n+\t\t\t\t\n+\t\t\tvar q = (int)Math.Round(v);\n+\t\t\treturn q % 2 == 0;\n+\t\t}\n+\n+\t\tpublic override string ToString()\n+\t\t{\n+\t\t\treturn \"even(\" + Operand +  \")\";\n+\t\t}\n+\t}\n+\t\n+\t[UXFunction(\"odd\")]\n+\t/** True if the rounded value is odd, false otherwise*/\n+\tpublic sealed class Odd : UnaryOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Odd([UXParameter(\"Operand\")] Expression operand): base(operand) {}\n+\t\tprotected override object Compute(object operand)\n+\t\t{\n+\t\t\tfloat v = 0;\n+\t\t\tif (!Marshal.TryToType<float>(operand, out v))\n+\t\t\t\treturn null;\n+\t\t\t\t\n+\t\t\tvar q = (int)Math.Round(v);\n+\t\t\treturn q % 2 != 0;\n+\t\t}\n+\n+\t\tpublic override string ToString()\n+\t\t{\n+\t\t\treturn \"odd(\" + Operand +  \")\";\n+\t\t}\n+\t}\n+\n+\t[UXFunction(\"alternate\")]\n+\t/**\n+\t\tAlternate between true/false values for ranges of integers.\n+\t\t\n+\t\t\talternate( value, groupSize )\n+\t\t\t\n+\t\tInput values are rounded to the nearest integer.\n+\t\t\n+\t\tExample:\n+\t\t\n+\t\t\talternate( value, 3 )\n+\t\t\t\n+\t\tThis will yield true for values 0,1,2, false for 3,4,5, true for 6,7,8, false for 9,10,11, etc.\n+\t*/\n+\tpublic sealed class Alternate : BinaryOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Alternate([UXParameter(\"Left\")] Expression left, [UXParameter(\"Right\")] Expression right): base(left, right) {}\n+\t\tprotected override object Compute(object left, object right)\n+\t\t{\n+\t\t\tfloat fvalue = 0;\n+\t\t\tfloat fgroup = 0;\n+\t\t\tif (!Marshal.TryToType<float>(left, out fvalue) ||\n+\t\t\t\t!Marshal.TryToType<float>(right, out fgroup))\n+\t\t\t\treturn null;\n+\t\t\tvar value = (int)Math.Round(fvalue);\n+\t\t\tvar group = (int)Math.Round(fgroup);\n+\t\t\tvar b = value >= 0 ? \n+\t\t\t\t(value % (group*2)) < group: \n+\t\t\t\t( -(value+1) % (group*2)) >= group;\n+\t\t\treturn b;\n+\t\t}\n+\n+\t\tpublic override string ToString()\n+\t\t{\n+\t\t\treturn \"alternate(\" + Left + \", \" + Right + \")\";\n+\t\t}\n+\t}\n+\n+\t/** \n+\t\tCommon base for floating point operations \n+\t\n+\t\tAll the derived expressions support 1-4 component input values and will return a value of the same size.\n+\t\t\n+\t\t[subclass Fuse.Reactive.UnaryFloatOperator]\n+\t*/\n+\tpublic abstract class UnaryFloatOperator : UnaryOperator\n+\t{\n+\t\tinternal delegate double FloatOp(double value);\n+\t\tstring _name;\n+\t\tFloatOp _op;\n+\t\tinternal UnaryFloatOperator(Expression operand, string name, FloatOp op) : \n+\t\t\tbase(operand) \n+\t\t{\n+\t\t\t_name = name;\n+\t\t\t_op = op;\n+\t\t}\n+\t\tprotected override object Compute(object operand)\n+\t\t{\n+\t\t\tfloat4 v;\n+\t\t\tint size;\n+\t\t\tif (Marshal.TryToZeroFloat4(operand, out v, out size))\n+\t\t\t{\t\n+\t\t\t\tif (size == 1)\n+\t\t\t\t\treturn _op(v[0]);\n+\t\t\t\tif (size == 2)\n+\t\t\t\t\treturn float2((float)_op(v[0]),(float)_op(v[1]));\n+\t\t\t\tif (size == 3)\n+\t\t\t\t\treturn float3((float)_op(v[0]),(float)_op(v[1]),(float)_op(v[2]));\n+\t\t\t\tif (size == 4)\n+\t\t\t\t\treturn float4((float)_op(v[0]),(float)_op(v[1]),(float)_op(v[2]),(float)_op(v[3]));\n+\t\t\t}\n+\t\t\t\t\n+\t\t\treturn null;\n+\t\t}\n+\t\tpublic override string ToString()\n+\t\t{\n+\t\t\treturn _name + \"(\" + Operand +  \")\";\n+\t\t}\n+\t}\n+\n+\t/**\n+\t\t[subclass Fuse.Reactive.BinaryFloatOperator]\n+\t*/\n+\tpublic abstract class BinaryFloatOperator : BinaryOperator\n+\t{\n+\t\tinternal delegate double FloatOp(double a, double b);\n+\t\tstring _name;\n+\t\tFloatOp _op;\n+\t\tinternal BinaryFloatOperator(Expression left, Expression right, string name, FloatOp op) : \n+\t\t\tbase(left, right) \n+\t\t{\n+\t\t\t_name = name;\n+\t\t\t_op = op;\n+\t\t}\n+\t\tprotected override object Compute(object left, object right)\n+\t\t{\n+\t\t\tdouble lv = 0;\n+\t\t\tdouble rv = 0;\n+\t\t\tif (!Marshal.TryToType<double>(left, out lv) ||\n+\t\t\t\t!Marshal.TryToType<double>(right, out rv))\n+\t\t\t\treturn null;\n+\t\t\treturn _op(lv, rv);\n+\t\t}\n+\t\tpublic override string ToString()\n+\t\t{\n+\t\t\treturn _name + \"(\" + Left + \",\" + Right +  \")\";\n+\t\t}\n+\t}\n+\t\n+\t[UXFunction(\"sin\")]\n+\t/** The trigonometric sine of the input angle (in radians) */\n+\tpublic sealed class Sin : UnaryFloatOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Sin([UXParameter(\"Operand\")] Expression operand)\n+\t\t\t: base(operand,\"sin\", Math.Sin) {}\n+\t}\n+\t\n+\t[UXFunction(\"cos\")]\n+\t/** The trigonometric cosine of the input angle (in radians) */\n+\tpublic sealed class Cos : UnaryFloatOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Cos([UXParameter(\"Operand\")] Expression operand)\n+\t\t\t: base(operand, \"cos\", Math.Cos) {}\n+\t}\n+\t\n+\t[UXFunction(\"tan\")]\n+\t/** The trigonometric tangent of the input angle (in radians) */\n+\tpublic sealed class Tan : UnaryFloatOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Tan([UXParameter(\"Operand\")] Expression operand)\n+\t\t\t: base(operand, \"tan\", Math.Tan) {}\n+\t}\n+\t\n+\t/** The invserse trigonometric sine of the input */\n+\t[UXFunction(\"asin\")]\n+\tpublic sealed class Asin : UnaryFloatOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Asin([UXParameter(\"Operand\")] Expression operand)\n+\t\t\t: base(operand,\"asin\", Math.Asin) {}\n+\t}\n+\t\n+\t[UXFunction(\"acos\")]\n+\t/** The invserse trigonometric cosine of the input */\n+\tpublic sealed class Acos : UnaryFloatOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Acos([UXParameter(\"Operand\")] Expression operand)\n+\t\t\t: base(operand, \"acos\", Math.Acos) {}\n+\t}\n+\t\n+\t[UXFunction(\"atan\")]\n+\t/** The invserse trigonometric tangent of the input */\n+\tpublic sealed class Atan : UnaryFloatOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Atan([UXParameter(\"Operand\")] Expression operand)\n+\t\t\t: base(operand, \"atan\", Math.Atan) {}\n+\t}\n+\t\n+\t[UXFunction(\"atan2\")]\n+\t/** \n+\t\tThe invserse trigonometric tangent of the input components \n+\t\t\n+\t\t\tatan2(y, x)\n+\t*/\n+\tpublic sealed class Atan2 : BinaryFloatOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Atan2([UXParameter(\"Left\")] Expression left, [UXParameter(\"Left\")] Expression right)\n+\t\t\t: base(left, right, \"atan2\", Math.Atan2) {}\n+\t}\n+\n+\t[UXFunction(\"abs\")]\n+\tpublic sealed class Abs : UnaryFloatOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Abs([UXParameter(\"Operand\")] Expression operand)\n+\t\t\t: base(operand, \"abs\", Math.Abs) {}\n+\t}\n+\n+\t[UXFunction(\"sqrt\")]\n+\tpublic sealed class Sqrt : UnaryFloatOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Sqrt([UXParameter(\"Operand\")] Expression operand)\n+\t\t\t: base(operand, \"sqrt\", Math.Sqrt) {}\n+\t}\n+\t\n+\t[UXFunction(\"ceil\")]\n+\tpublic sealed class Ceil : UnaryFloatOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Ceil([UXParameter(\"Operand\")] Expression operand)\n+\t\t\t: base(operand, \"ceil\", Math.Ceil) {}\n+\t}\n+\t\n+\t[UXFunction(\"floor\")]\n+\tpublic sealed class Floor : UnaryFloatOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Floor([UXParameter(\"Operand\")] Expression operand)\n+\t\t\t: base(operand, \"floor\", Math.Floor) {}\n+\t}\n+\t\n+\t[UXFunction(\"degreesToRadians\")]\n+\tpublic sealed class DegreesToRadians : UnaryFloatOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic DegreesToRadians([UXParameter(\"Operand\")] Expression operand)\n+\t\t\t: base(operand, \"degreesToRadians\", Math.DegreesToRadians) {}\n+\t}\n+\n+\t[UXFunction(\"radiansToDegrees\")]\n+\tpublic sealed class RadiansToDegrees : UnaryFloatOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic RadiansToDegrees([UXParameter(\"Operand\")] Expression operand)\n+\t\t\t: base(operand, \"radiansToDegrees\", Math.RadiansToDegrees) {}\n+\t}\n+\n+\t[UXFunction(\"exp\")]\n+\tpublic sealed class Exp : UnaryFloatOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Exp([UXParameter(\"Operand\")] Expression operand)\n+\t\t\t: base(operand, \"exp\", Math.Exp) {}\n+\t}\n+\n+\t[UXFunction(\"exp2\")]\n+\tpublic sealed class Exp2 : UnaryFloatOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Exp2([UXParameter(\"Operand\")] Expression operand)\n+\t\t\t: base(operand, \"exp2\", Math.Exp2) {}\n+\t}\n+\n+\t[UXFunction(\"fract\")]\n+\tpublic sealed class Fract : UnaryFloatOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Fract([UXParameter(\"Operand\")] Expression operand)\n+\t\t\t: base(operand, \"fract\", Math.Fract) {}\n+\t}\n+\t\n+\t[UXFunction(\"log\")]\n+\tpublic sealed class Log : UnaryFloatOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Log([UXParameter(\"Operand\")] Expression operand)\n+\t\t\t: base(operand, \"log\", Math.Log) {}\n+\t}\n+\n+\t[UXFunction(\"log2\")]\n+\tpublic sealed class Log2 : UnaryFloatOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Log2([UXParameter(\"Operand\")] Expression operand)\n+\t\t\t: base(operand, \"log2\", Math.Log2) {}\n+\t}\n+\t\n+\t[UXFunction(\"sign\")]\n+\tpublic sealed class Sign : UnaryFloatOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Sign([UXParameter(\"Operand\")] Expression operand)\n+\t\t\t: base(operand, \"sign\", Math.Sign) {}\n+\t}\n+\n+\t[UXFunction(\"pow\")]\n+\tpublic sealed class Pow : BinaryFloatOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Pow([UXParameter(\"Left\")] Expression left, [UXParameter(\"Right\")] Expression right)\n+\t\t\t: base(left, right, \"pow\", Math.Pow) {}\n+\t}\n+\n+\t[UXFunction(\"round\")]\n+\tpublic sealed class Round : UnaryFloatOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Round([UXParameter(\"Operand\")] Expression operand)\n+\t\t\t: base(operand, \"operand\", Math.Round) {}\n+\t}\n+\t\n+\t[UXFunction(\"trunc\")]\n+\t/** Rounds to the next whole integer closer to zero */\n+\tpublic sealed class Trunc : UnaryFloatOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Trunc([UXParameter(\"Operand\")] Expression operand)\n+\t\t\t: base(operand, \"trunc\", Op) {}\n+\t\t\t\n+\t\tinternal static double Op(double v)\n+\t\t{\n+\t\t\treturn v < 0 ? Math.Ceil(v) : Math.Floor(v);\n+\t\t}\n+\t}\n+\t\n+\t/**\n+\t\tCalculates the linear interpolation between two values.\n+\t\t\n+\t\t\tlerp( from, to, step )\n+\t\t\t\n+\t\tWhen step==0 the result is `from`, when step==1 the result is `to`. Partial values are linearly interpolated. Step values <0 and >1 are also supported.\n+\t\t\n+\t\tThe input supports a 1-4 component value for `from` and `to`. The result will be same size. \n+\t\t`step` must always be a single value.\n+\t*/\n+\t[UXFunction(\"lerp\")]\n+\tpublic sealed class Lerp : TernaryOperator\n+\t{\n+\t\t[UXConstructor]\n+\t\tpublic Lerp([UXParameter(\"First\")] Expression first, \n+\t\t\t[UXParameter(\"Second\")] Expression second, \n+\t\t\t[UXParameter(\"Third\")] Expression third) : \n+\t\t\tbase(first, second, third) \n+\t\t{ }\n+\t\tprotected override object Compute(object a, object b, object t)\n+\t\t{\n+\t\t\tfloat4 av = float4(0), bv = float4(0);\n+\t\t\tint asize = 0, bsize = 0;\n+\t\t\tfloat tv = 0;\n+\t\t\tif (!Marshal.TryToZeroFloat4(a, out av, out asize) ||\t\n+\t\t\t\t!Marshal.TryToZeroFloat4(b, out bv, out bsize) ||\n+\t\t\t\t!Marshal.TryToType<float>(t, out tv))\n+\t\t\t\treturn null;\n+\t\t\tint size = Math.Max(asize, bsize);\n+\t\t\t\n+\t\t\tif (size == 1)\n+\t\t\t\treturn Math.Lerp(av.X, bv.X, tv);\n+\t\t\tif (size == 2)\n+\t\t\t\treturn Math.Lerp(av.XY, bv.XY, tv);\n+\t\t\tif (size == 3)\n+\t\t\t\treturn Math.Lerp(av.XYZ, bv.XYZ, tv);\n+\t\t\tif (size == 4)","path":"Source/Fuse.Reactive.Expressions/MathFunctions.uno","position":409,"original_position":409,"commit_id":"db7e85bce6476c49151dfd4aa0a6a6024d29d32d","original_commit_id":"db7e85bce6476c49151dfd4aa0a6a6024d29d32d","user":{"login":"kusma","id":47073,"avatar_url":"https://avatars0.githubusercontent.com/u/47073?v=3","gravatar_id":"","url":"https://api.github.com/users/kusma","html_url":"https://github.com/kusma","followers_url":"https://api.github.com/users/kusma/followers","following_url":"https://api.github.com/users/kusma/following{/other_user}","gists_url":"https://api.github.com/users/kusma/gists{/gist_id}","starred_url":"https://api.github.com/users/kusma/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kusma/subscriptions","organizations_url":"https://api.github.com/users/kusma/orgs","repos_url":"https://api.github.com/users/kusma/repos","events_url":"https://api.github.com/users/kusma/events{/privacy}","received_events_url":"https://api.github.com/users/kusma/received_events","type":"User","site_admin":false},"body":"switch instead, perhaps?","created_at":"2017-06-06T09:12:06Z","updated_at":"2017-06-06T09:21:34Z","html_url":"https://github.com/fusetools/fuselibs-public/pull/50#discussion_r120302030","pull_request_url":"https://api.github.com/repos/fusetools/fuselibs-public/pulls/50","_links":{"self":{"href":"https://api.github.com/repos/fusetools/fuselibs-public/pulls/comments/120302030"},"html":{"href":"https://github.com/fusetools/fuselibs-public/pull/50#discussion_r120302030"},"pull_request":{"href":"https://api.github.com/repos/fusetools/fuselibs-public/pulls/50"}}},"pull_request":{"url":"https://api.github.com/repos/fusetools/fuselibs-public/pulls/50","id":121989358,"html_url":"https://github.com/fusetools/fuselibs-public/pull/50","diff_url":"https://github.com/fusetools/fuselibs-public/pull/50.diff","patch_url":"https://github.com/fusetools/fuselibs-public/pull/50.patch","issue_url":"https://api.github.com/repos/fusetools/fuselibs-public/issues/50","number":50,"state":"open","locked":false,"title":"Index, Trigonometry, and math function extravaganza","user":{"login":"mortoray","id":1308999,"avatar_url":"https://avatars0.githubusercontent.com/u/1308999?v=3","gravatar_id":"","url":"https://api.github.com/users/mortoray","html_url":"https://github.com/mortoray","followers_url":"https://api.github.com/users/mortoray/followers","following_url":"https://api.github.com/users/mortoray/following{/other_user}","gists_url":"https://api.github.com/users/mortoray/gists{/gist_id}","starred_url":"https://api.github.com/users/mortoray/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mortoray/subscriptions","organizations_url":"https://api.github.com/users/mortoray/orgs","repos_url":"https://api.github.com/users/mortoray/repos","events_url":"https://api.github.com/users/mortoray/events{/privacy}","received_events_url":"https://api.github.com/users/mortoray/received_events","type":"User","site_admin":false},"body":"You wanted functions you get functions. Lots of them.\r\n\r\nShould be safe for a 1.0.1 release as it doesn't really change anything, mainly adds new stuff.\r\n\r\nFixes https://github.com/fusetools/fuselibs/issues/4190","created_at":"2017-05-23T12:49:24Z","updated_at":"2017-06-06T09:21:35Z","closed_at":null,"merged_at":null,"merge_commit_sha":"44e69a35a0080c2d5555afe8a94b648a62016835","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/fusetools/fuselibs-public/pulls/50/commits","review_comments_url":"https://api.github.com/repos/fusetools/fuselibs-public/pulls/50/comments","review_comment_url":"https://api.github.com/repos/fusetools/fuselibs-public/pulls/comments{/number}","comments_url":"https://api.github.com/repos/fusetools/fuselibs-public/issues/50/comments","statuses_url":"https://api.github.com/repos/fusetools/fuselibs-public/statuses/db7e85bce6476c49151dfd4aa0a6a6024d29d32d","head":{"label":"mortoray:eachexpression","ref":"eachexpression","sha":"db7e85bce6476c49151dfd4aa0a6a6024d29d32d","user":{"login":"mortoray","id":1308999,"avatar_url":"https://avatars0.githubusercontent.com/u/1308999?v=3","gravatar_id":"","url":"https://api.github.com/users/mortoray","html_url":"https://github.com/mortoray","followers_url":"https://api.github.com/users/mortoray/followers","following_url":"https://api.github.com/users/mortoray/following{/other_user}","gists_url":"https://api.github.com/users/mortoray/gists{/gist_id}","starred_url":"https://api.github.com/users/mortoray/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mortoray/subscriptions","organizations_url":"https://api.github.com/users/mortoray/orgs","repos_url":"https://api.github.com/users/mortoray/repos","events_url":"https://api.github.com/users/mortoray/events{/privacy}","received_events_url":"https://api.github.com/users/mortoray/received_events","type":"User","site_admin":false},"repo":{"id":90272505,"name":"fuselibs-public","full_name":"mortoray/fuselibs-public","owner":{"login":"mortoray","id":1308999,"avatar_url":"https://avatars0.githubusercontent.com/u/1308999?v=3","gravatar_id":"","url":"https://api.github.com/users/mortoray","html_url":"https://github.com/mortoray","followers_url":"https://api.github.com/users/mortoray/followers","following_url":"https://api.github.com/users/mortoray/following{/other_user}","gists_url":"https://api.github.com/users/mortoray/gists{/gist_id}","starred_url":"https://api.github.com/users/mortoray/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mortoray/subscriptions","organizations_url":"https://api.github.com/users/mortoray/orgs","repos_url":"https://api.github.com/users/mortoray/repos","events_url":"https://api.github.com/users/mortoray/events{/privacy}","received_events_url":"https://api.github.com/users/mortoray/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mortoray/fuselibs-public","description":null,"fork":true,"url":"https://api.github.com/repos/mortoray/fuselibs-public","forks_url":"https://api.github.com/repos/mortoray/fuselibs-public/forks","keys_url":"https://api.github.com/repos/mortoray/fuselibs-public/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mortoray/fuselibs-public/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mortoray/fuselibs-public/teams","hooks_url":"https://api.github.com/repos/mortoray/fuselibs-public/hooks","issue_events_url":"https://api.github.com/repos/mortoray/fuselibs-public/issues/events{/number}","events_url":"https://api.github.com/repos/mortoray/fuselibs-public/events","assignees_url":"https://api.github.com/repos/mortoray/fuselibs-public/assignees{/user}","branches_url":"https://api.github.com/repos/mortoray/fuselibs-public/branches{/branch}","tags_url":"https://api.github.com/repos/mortoray/fuselibs-public/tags","blobs_url":"https://api.github.com/repos/mortoray/fuselibs-public/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mortoray/fuselibs-public/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mortoray/fuselibs-public/git/refs{/sha}","trees_url":"https://api.github.com/repos/mortoray/fuselibs-public/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mortoray/fuselibs-public/statuses/{sha}","languages_url":"https://api.github.com/repos/mortoray/fuselibs-public/languages","stargazers_url":"https://api.github.com/repos/mortoray/fuselibs-public/stargazers","contributors_url":"https://api.github.com/repos/mortoray/fuselibs-public/contributors","subscribers_url":"https://api.github.com/repos/mortoray/fuselibs-public/subscribers","subscription_url":"https://api.github.com/repos/mortoray/fuselibs-public/subscription","commits_url":"https://api.github.com/repos/mortoray/fuselibs-public/commits{/sha}","git_commits_url":"https://api.github.com/repos/mortoray/fuselibs-public/git/commits{/sha}","comments_url":"https://api.github.com/repos/mortoray/fuselibs-public/comments{/number}","issue_comment_url":"https://api.github.com/repos/mortoray/fuselibs-public/issues/comments{/number}","contents_url":"https://api.github.com/repos/mortoray/fuselibs-public/contents/{+path}","compare_url":"https://api.github.com/repos/mortoray/fuselibs-public/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mortoray/fuselibs-public/merges","archive_url":"https://api.github.com/repos/mortoray/fuselibs-public/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mortoray/fuselibs-public/downloads","issues_url":"https://api.github.com/repos/mortoray/fuselibs-public/issues{/number}","pulls_url":"https://api.github.com/repos/mortoray/fuselibs-public/pulls{/number}","milestones_url":"https://api.github.com/repos/mortoray/fuselibs-public/milestones{/number}","notifications_url":"https://api.github.com/repos/mortoray/fuselibs-public/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mortoray/fuselibs-public/labels{/name}","releases_url":"https://api.github.com/repos/mortoray/fuselibs-public/releases{/id}","deployments_url":"https://api.github.com/repos/mortoray/fuselibs-public/deployments","created_at":"2017-05-04T14:24:27Z","updated_at":"2017-05-04T14:24:32Z","pushed_at":"2017-06-06T08:28:00Z","git_url":"git://github.com/mortoray/fuselibs-public.git","ssh_url":"git@github.com:mortoray/fuselibs-public.git","clone_url":"https://github.com/mortoray/fuselibs-public.git","svn_url":"https://github.com/mortoray/fuselibs-public","homepage":null,"size":12980,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"fusetools:master","ref":"master","sha":"b97dc6b70fd51f64165f35d41e910528b7e17303","user":{"login":"fusetools","id":10243317,"avatar_url":"https://avatars2.githubusercontent.com/u/10243317?v=3","gravatar_id":"","url":"https://api.github.com/users/fusetools","html_url":"https://github.com/fusetools","followers_url":"https://api.github.com/users/fusetools/followers","following_url":"https://api.github.com/users/fusetools/following{/other_user}","gists_url":"https://api.github.com/users/fusetools/gists{/gist_id}","starred_url":"https://api.github.com/users/fusetools/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fusetools/subscriptions","organizations_url":"https://api.github.com/users/fusetools/orgs","repos_url":"https://api.github.com/users/fusetools/repos","events_url":"https://api.github.com/users/fusetools/events{/privacy}","received_events_url":"https://api.github.com/users/fusetools/received_events","type":"Organization","site_admin":false},"repo":{"id":89240957,"name":"fuselibs-public","full_name":"fusetools/fuselibs-public","owner":{"login":"fusetools","id":10243317,"avatar_url":"https://avatars2.githubusercontent.com/u/10243317?v=3","gravatar_id":"","url":"https://api.github.com/users/fusetools","html_url":"https://github.com/fusetools","followers_url":"https://api.github.com/users/fusetools/followers","following_url":"https://api.github.com/users/fusetools/following{/other_user}","gists_url":"https://api.github.com/users/fusetools/gists{/gist_id}","starred_url":"https://api.github.com/users/fusetools/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fusetools/subscriptions","organizations_url":"https://api.github.com/users/fusetools/orgs","repos_url":"https://api.github.com/users/fusetools/repos","events_url":"https://api.github.com/users/fusetools/events{/privacy}","received_events_url":"https://api.github.com/users/fusetools/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/fusetools/fuselibs-public","description":null,"fork":false,"url":"https://api.github.com/repos/fusetools/fuselibs-public","forks_url":"https://api.github.com/repos/fusetools/fuselibs-public/forks","keys_url":"https://api.github.com/repos/fusetools/fuselibs-public/keys{/key_id}","collaborators_url":"https://api.github.com/repos/fusetools/fuselibs-public/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/fusetools/fuselibs-public/teams","hooks_url":"https://api.github.com/repos/fusetools/fuselibs-public/hooks","issue_events_url":"https://api.github.com/repos/fusetools/fuselibs-public/issues/events{/number}","events_url":"https://api.github.com/repos/fusetools/fuselibs-public/events","assignees_url":"https://api.github.com/repos/fusetools/fuselibs-public/assignees{/user}","branches_url":"https://api.github.com/repos/fusetools/fuselibs-public/branches{/branch}","tags_url":"https://api.github.com/repos/fusetools/fuselibs-public/tags","blobs_url":"https://api.github.com/repos/fusetools/fuselibs-public/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/fusetools/fuselibs-public/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/fusetools/fuselibs-public/git/refs{/sha}","trees_url":"https://api.github.com/repos/fusetools/fuselibs-public/git/trees{/sha}","statuses_url":"https://api.github.com/repos/fusetools/fuselibs-public/statuses/{sha}","languages_url":"https://api.github.com/repos/fusetools/fuselibs-public/languages","stargazers_url":"https://api.github.com/repos/fusetools/fuselibs-public/stargazers","contributors_url":"https://api.github.com/repos/fusetools/fuselibs-public/contributors","subscribers_url":"https://api.github.com/repos/fusetools/fuselibs-public/subscribers","subscription_url":"https://api.github.com/repos/fusetools/fuselibs-public/subscription","commits_url":"https://api.github.com/repos/fusetools/fuselibs-public/commits{/sha}","git_commits_url":"https://api.github.com/repos/fusetools/fuselibs-public/git/commits{/sha}","comments_url":"https://api.github.com/repos/fusetools/fuselibs-public/comments{/number}","issue_comment_url":"https://api.github.com/repos/fusetools/fuselibs-public/issues/comments{/number}","contents_url":"https://api.github.com/repos/fusetools/fuselibs-public/contents/{+path}","compare_url":"https://api.github.com/repos/fusetools/fuselibs-public/compare/{base}...{head}","merges_url":"https://api.github.com/repos/fusetools/fuselibs-public/merges","archive_url":"https://api.github.com/repos/fusetools/fuselibs-public/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/fusetools/fuselibs-public/downloads","issues_url":"https://api.github.com/repos/fusetools/fuselibs-public/issues{/number}","pulls_url":"https://api.github.com/repos/fusetools/fuselibs-public/pulls{/number}","milestones_url":"https://api.github.com/repos/fusetools/fuselibs-public/milestones{/number}","notifications_url":"https://api.github.com/repos/fusetools/fuselibs-public/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/fusetools/fuselibs-public/labels{/name}","releases_url":"https://api.github.com/repos/fusetools/fuselibs-public/releases{/id}","deployments_url":"https://api.github.com/repos/fusetools/fuselibs-public/deployments","created_at":"2017-04-24T13:04:33Z","updated_at":"2017-05-31T16:21:03Z","pushed_at":"2017-06-06T08:28:02Z","git_url":"git://github.com/fusetools/fuselibs-public.git","ssh_url":"git@github.com:fusetools/fuselibs-public.git","clone_url":"https://github.com/fusetools/fuselibs-public.git","svn_url":"https://github.com/fusetools/fuselibs-public","homepage":null,"size":13084,"stargazers_count":29,"watchers_count":29,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":15,"mirror_url":null,"open_issues_count":19,"forks":15,"open_issues":19,"watchers":29,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/fusetools/fuselibs-public/pulls/50"},"html":{"href":"https://github.com/fusetools/fuselibs-public/pull/50"},"issue":{"href":"https://api.github.com/repos/fusetools/fuselibs-public/issues/50"},"comments":{"href":"https://api.github.com/repos/fusetools/fuselibs-public/issues/50/comments"},"review_comments":{"href":"https://api.github.com/repos/fusetools/fuselibs-public/pulls/50/comments"},"review_comment":{"href":"https://api.github.com/repos/fusetools/fuselibs-public/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/fusetools/fuselibs-public/pulls/50/commits"},"statuses":{"href":"https://api.github.com/repos/fusetools/fuselibs-public/statuses/db7e85bce6476c49151dfd4aa0a6a6024d29d32d"}}}}
{"actor":{"display_login":"kusma"}}