Skip to content

Instantly share code, notes, and snippets.

TeaDrivenDev

Block or report user

Report or block TeaDrivenDev

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@TeaDrivenDev
TeaDrivenDev / g.sh
Created May 10, 2017
Shell script that runs the given Git command and then `git status` except for certain cases where it's not useful
View g.sh
#!/bin/sh
args=("$@")
git "$@"
if [ $# -gt 0 ]
then
first=${args[0]}
View FsAdvent.fsx
#r @"..\packages\FSharp.Data\lib\net40\FSharp.Data.dll"
open FSharp.Data
[<Literal>]
let OverviewUrl = @"https://sergeytihon.wordpress.com/2016/10/23/f-advent-calendar-in-english-2016/"
type Page = HtmlProvider<OverviewUrl>
@TeaDrivenDev
TeaDrivenDev / Prelude.fsx
Created Nov 3, 2016
F# functions I use a lot, mostly in prototyping; functionally correct, not necessarily efficient.
View Prelude.fsx
open System
let asFst second first = first, second
let asSnd first second = first, second
let swap (a, b) = b, a
type FullJoinResult<'TLeft, 'TRight> =
| LeftOnly of 'TLeft
| RightOnly of 'TRight
@TeaDrivenDev
TeaDrivenDev / ArguInteropExample.fsx
Last active Sep 25, 2016
Simple example how to hide Argu command line parsing behind an interface for use from .NET languages other than F#
View ArguInteropExample.fsx
open Argu
type CliArguments =
| Yes
| Name of string
| Value of int
with interface IArgParserTemplate with
member s.Usage =
match s with
| Yes -> "specify"
@TeaDrivenDev
TeaDrivenDev / Fsharp.ahk
Created Aug 3, 2016
AutoHotkey script for F# development
View Fsharp.ahk
; In case you think you may need Caps Lock again at some point,
; we'll move it over to Win+Caps Lock
#Persistent
SetCapsLockState, AlwaysOff
#Capslock::
If GetKeyState("CapsLock", "T") = 1
SetCapsLockState, AlwaysOff
@TeaDrivenDev
TeaDrivenDev / VSExtensions.txt
Created Jun 10, 2016
These are the Visual Studio extensions I'm more or less actively using. Descriptions are from the VSIX where I had nothing else to say. All are free (usually open source) on the VS gallery, except where marked as commercial.
View VSExtensions.txt
SwitchStartupProject
Provides a toolbar dropdown box to switch between startup projects. -- VS 2015 has that too, but that doesn't recognize F# projects
https://visualstudiogallery.msdn.microsoft.com/f4e1be8c-b2dd-4dec-b273-dd88f8818571
Productivity Power Tools 2015
Color coded document tabs by file extension or project, various information in the scroll bar, column guides, etc.
https://visualstudiogallery.msdn.microsoft.com/34ebc6a2-2777-421d-8914-e29c1dfa7f5d
CodeLineage
Augments Visual Studio's built-in difference viewer with 'from' and 'to' revision sliders. Accessible from the 'Tools' menu, CodeLineage allows easy access to a cumulative diff view between file revisions. Supports SVN, Perforce, Git and Mercurial.
@TeaDrivenDev
TeaDrivenDev / UpdateExercismProject.fsx
Created May 10, 2016
F# script to add the files for a new F# problem to an .fsproj file
View UpdateExercismProject.fsx
(*
I am using Visual Studio to solve the F# problems on exercism.io, and I found it tedious
to always add the same files (test file, new code file, readme, plus a folder for better
organization) after each `exercism fetch`, so I automated that.
As it is, this assumes that the .fsproj file is in `exercism\fsharp`. When run, it compares
the subdirectories present with the folders in the .fsproj file, and for any that are
missing in the project file, it adds the `*Test(s).fs` and `README.md` files as well as
creating a new .fs file for the problem solution. It also adds a `module` line with the
respective file name (which is correct most of the time; only occasionally, the module the
@TeaDrivenDev
TeaDrivenDev / NestedLets.fs
Created Mar 11, 2014
F# composition root with lots of single and with nested lets
View NestedLets.fs
// old
let ComposeSimple serviceProvider configuration =
let (context, organizationService, _, _) = DecomposeServiceProvider serviceProvider
let configurationXml = XElement.Parse configuration
let getRecordName = GetRecordName organizationService
let regardingLookups() = ConfiguredRegardingLookups configurationXml
let listFindingRegardingObject() = ListFindingRegardingObject regardingLookups (GetFullRecordImage(context))
let regardingObject = NameAddedRegardingObject getRecordName listFindingRegardingObject
View QueryByAttribute to QueryExpression
// This....
QueryByAttribute qba = new QueryByAttribute("entityName")
{
ColumnSet = new ColumnSet("fieldA", "fieldB")
};
// There may be several of these lines
qba.AddAttributeValue("fieldC", "fieldCValue");
@TeaDrivenDev
TeaDrivenDev / Csharp_vs_Fsharp.md
Last active Jan 4, 2016
Comparison of a small MSCRM plugin implemented in C# and F#
View Csharp_vs_Fsharp.md

As requested by several people on Twitter after I mentioned that the C# implementation is 27 lines, and the F# version saves only two lines over this (which is mainly because there isn't much to save at all). In the mean time, I actually managed to shave off two more lines because the last method call incidentally returns void.

Please note that the plugin as such is not very useful; I'm mainly trying to get an F# plugin to run within MSCRM in the first place.

C#:

	using Microsoft.Xrm.Sdk;
	using System;
	
You can’t perform that action at this time.