Skip to content

Instantly share code, notes, and snippets.

@ruurtjan
ruurtjan / functional-dsl-blog-9.scala
Created May 22, 2020 12:08
functional-dsl-blog-9.scala
case class EmailFilter(run: Email => Boolean) { self =>
def &&(that: EmailFilter): EmailFilter =
EmailFilter(email => self.run(email) && that.run(email))
def ||(that: EmailFilter): EmailFilter =
EmailFilter(email => self.run(email) || that.run(email))
def negate : EmailFilter =
EmailFilter(email => !self.run(email))
}
object EmailFilter {
@ruurtjan
ruurtjan / functional-dsl-blog-10.scala
Last active May 27, 2020 07:56
functional-dsl-blog-10.scala
sealed trait EmailFilter { self =>
def &&(that: EmailFilter): EmailFilter = EmailFilter.And(self, that)
def ||(that: EmailFilter): EmailFilter = (self.negate && that.negate).negate
def negate : EmailFilter = EmailFilter.Not(self)
import EmailFilter._
def run(email: Email): Boolean = self match {
case Always => true
case Not(filter: EmailFilter) => !filter.run(email)
case And(left: EmailFilter, right: EmailFilter) =>
@ruurtjan
ruurtjan / functional-dsl-blog-7.scala
Created May 22, 2020 12:02
Initial encoded email filter example
object initial_encoded_email_filter {
final case class Address(emailAddress: String)
final case class Email(sender: Address, to: List[Address], subject: String, body: String)
sealed trait EmailFilter { self =>
def &&(that: EmailFilter): EmailFilter = EmailFilter.And(self, that)
def ||(that: EmailFilter): EmailFilter = (self.negate && that.negate).negate
def negate : EmailFilter = EmailFilter.Not(self)
@ruurtjan
ruurtjan / functional-dsl-blog-8.scala
Created May 22, 2020 12:02
Final encoded email filter
object final_encoded_email_filter {
final case class Address(emailAddress: String)
final case class Email(sender: Address, to: List[Address], subject: String, body: String)
case class EmailFilter(run: Email => Boolean) { self =>
def &&(that: EmailFilter): EmailFilter = EmailFilter(email => self.run(email) && that.run(email))
def ||(that: EmailFilter): EmailFilter = EmailFilter(email => self.run(email) || that.run(email))
def negate : EmailFilter = EmailFilter(email => !self.run(email))
@ruurtjan
ruurtjan / get-windows-product-key.vbs
Last active November 26, 2021 12:45
A product key retrieval script that was used by Microsoft support. Save it with the `.vbs` extension, right click and select `Open with Command Prompt`.
Set WshShell = CreateObject("WScript.Shell")
Key = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\"
DigitalID = WshShell.RegRead(key & "DigitalProductId")
ProductName = "Product Name: " & WshShell.RegRead(Key & "ProductName") & vbNewLine
ProductID = "Product ID: " & WshShell.RegRead(Key & "ProductID") & vbNewLine
ProductKey = "Installed Key: " & ConvertToKey(DigitalID)
ProductID = ProductName & ProductID & ProductKey
If vbYes = MsgBox(ProductId & vblf & vblf & "Save to a file?", vbYesNo + vbQuestion, "Windows Key Information") then
Save ProductID
End if