๐
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var normalize = System.normalize; | |
System.normalize = function (name, parentName, parentAddress) { | |
console.log("normalize: " + JSON.stringify({ | |
name: name, | |
parentName: parentName, | |
parentAddress: parentAddress | |
})); | |
return normalize.call(this, name, parentName, parentAddress); | |
}; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private QueryAnalysis[] GetQueriesToAnalyze() | |
{ | |
var queries = _Project.GetRulesInProjectFileAndInRuleFilesAndDeclaredInSourceCode(_Analysis.RulesExtractedFromCode).RootParent; | |
var activeQueries = queries.GetActiveQueries(); | |
var compiledQueriesByQueryString = GetCompiledQueriesByQueryString(activeQueries); | |
var justMyCode = queries.ComputeJustMyCode(_Analysis.CodeBase); | |
return activeQueries | |
.Select(query => new QueryAnalysis(query, compiledQueriesByQueryString[query.QueryString], justMyCode, _Project)) | |
.ToArray(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class ArgumentBuilder(private val runnerParameters: Map<String, String>) { | |
public fun build(): List<String> { | |
return arrayListOf<String>() | |
.addIfSet("--Project", RunnerSettings.PROJECT_FILE) | |
.addIfSet("--Output", RunnerSettings.OUTPUT) | |
.addFlagIfSet("--Flag1", RunnerSettings.FLAG_1) | |
.addFlagIfSet("--Flag2", RunnerSettings.FLAG_2) | |
.addFlagIfSet("--Flag3", RunnerSettings.FLAG_3) | |
.addMultipleIfSet("--InputFiles", RunnerSettings.INPUTS) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Provide a means to fluently tap into a chain of method calls so as not to need to declare unnecessary variables | |
* */ | |
public fun <T : Any, R> T.tap(tap: (T) -> R): T { | |
tap(this) | |
return this | |
} | |
// here's an example where I'm in a fluent builder and I'd like to log the URI of the request without introducing a variable | |
val response = this.builds.queryParam("locator", "buildType:{buildTypeId},count:1,personal:false,canceled:false") |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// In Kotlin, I can force the source of a reference to ensure it's not null, that way every thing thereafter doesn't have to deal with null references | |
// This is what I refer to as fixing things up stream, of course when appropriate. | |
// Typically sources of references don't both to check for null and even if they do, they can't make explicit that they've taken care of that check. So every consumer of that reference theoretically may need to check. | |
// In this example, there's no reason the userId, password and serverUrl should ever be null. Unfortunately because of interop with java, that's not a contractual guarantee. | |
// So at the point that I produce these values for my own use, I perfom the check in one place, stop everything if my assumption is not valid, and otherwise be on my merry way never to worry about null references after this point | |
abstract class Restore(val runner: BuildRunnerContext) { | |
val logger: SimpleBuildLogger = runner.getBuild().getBuildLogger() | |
val client: TeamCityClient | |
{ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// At this time Nancy's Razor view engine doesn't let you set a default base class like ASP.NET web pages does with pageBaseType, if you want to hack one in here is how: | |
// First create your custom type, this one writes out hack for everything, so obviously remove that unless you want that :) | |
public abstract class MyRazorPage<T> : NancyRazorViewBase<T> | |
{ | |
public override void Write(object value) | |
{ | |
base.WriteLiteral("hack"); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Out of the box, WebViewPage essentially does this to write content: | |
Output.Write(HttpUtility.HtmlEncode(content)); | |
// And HttpUtility.HtmlEncode will encode anything not marked with the IHtmlString interface | |
// If we have a custom html builder we have to use something like this: | |
@Html.Raw(safeBuilder) | |
// This is a lot of extra typing |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[Test] | |
[Timeout(2000)] | |
public async Task WriteToFile_StreamsChanged() | |
{ | |
using (var watcher = new ObservableFileSystemWatcher(c => { c.Path = TempPath; })) | |
{ | |
var firstChanged = watcher.Changed.FirstAsync().ToTask(); | |
watcher.Start(); | |
File.WriteAllText(Path.Combine(TempPath, "Changed.Txt"), "foo"); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// FYI YMMV this was just a first pass and I know it has some issues at times that I need to workout | |
// usage | |
// source: a function that takes the query (text entered by user) and a callback (process), if source is synchronous it should return the results and ignore the callback, otherwise it should return nothing and use the callback to return the results | |
// selectedId: the model property to bind the id to | |
// value: the model property to bind the text value of the selection to | |
// data-bind="typeahead: { source: App.view.targets.typeAheadSource, selectedId: target._id }, value: target.name" | |
// note I also use this little helper class to wrap up all this functionality | |
// it takes a url to query the results for asynchrnous data sets and has an init method to call to query the data initially. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require(['knockout', 'jquery.elastic'], function (ko) { | |
ko.bindingHandlers.elastic = { | |
// todo probably should make this destroy when the element is destroyed. | |
update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) { | |
$(element).elastic(); | |
} | |
} | |
}); |